私はWPF/WP7 Silverlightの添付行動について学ぶためにしようとしている、と私は誰かが中に重量を量ることができれば、私は疑問に思い概念バリケードに対して作ってみました。WPF/WP7添付ビヘイビア - 関連するオブジェクトのイベント発射前に実行
私が作成しようとしている機能の例は、次のとおりです。クリックハンドラがナビゲーションをトリガーするボタン(NavigationContext.Navigate())をユーザーがクリックし、実際にナビゲーションが行われる前にアニメーションが発生します不透明度を1から0(フェードアウト効果)に減少させるボタン上のボタンです。
ので、順番に:
- ユーザーが
- ボタンはナビゲーションが右、十分
シンプル発生
public class FadeBehavior : Behavior<Button>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.Click += (obj, args) => {
Storyboard sb = new Storyboard();
DoubleAnimation an = new DoubleAnimation();
an.Duration = TimeSpan.FromMilliseconds(300);
an.From = 1;
an.To = 0;
Storyboard.SetTarget(an, AssociatedObject);
Storyboard.SetTargetProperty(an, new PropertyPath("Opacity"));
sb.Children.Add(an);
sb.Begin();
};
}
}
ページボタンの上の.xaml.csナビゲーションをトリガーするクリックハンドラが含まれていない場合、これは明らかに正常に動作しますが、私はそれを配線するとき、ナビゲーションが行われる前にアニメーションが完了しません。私はなぜこれが当然ののか理解していますが、これを達成する方法があるかどうか疑問に思っています。これは、非ひどいデザインの素晴らしい特性も示しています。
は、私は、一見関連が、実際に受け入れられた答えは、これを行うための唯一の方法ですthis SO threadを見つけましたか?
ありがとうございました。
EDIT:WP7を持っていて、これを理解していると、Redditリーダーのアプリ「Baconit」は、あなたがストーリー。
を(http://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.completed.aspx)イベントが終了したら何かをするためのストーリーボードまたはアニメーション。 – Clemens
よろしくお願いします。そのアイディアが私に起こりました。私はデザインエキスパートではありませんが、ビヘイビアは実際にこのようなことをするように設計されていると思いました。アニメーションストーリーボードに関する何かをxaml.csが知っている必要はありません。 。しかし、それは私がやってしまうことかもしれません:-)ありがとう! – Jammer
あなた自身の[NavigateToPageAction](http://msdn.microsoft.com/en-us/library/ff979325(v = expression.40).aspx)の動作を独自に作成することもできます。次に、Completedイベントを使用して、ビヘイビア内の指定されたページに移動できます。私はそれを試していない。私はxaml.csのclickイベントを使用してもまだ問題が発生すると思います。 –