WPFでは、はStoryboard.SkipToFill()
で停止できますが、Completed
イベントは直ちに発生しません。ただ、次のデモコード示すよう:WPF Storyboard.Completedイベントは即時ではありません。
public partial class MainWindow : Window
{
private Storyboard _storyboard = new Storyboard();
public MainWindow()
{
InitializeComponent();
InitializeStoryboard();
}
private void InitializeStoryboard()
{
var animation = new DoubleAnimation
{
Duration = TimeSpan.FromSeconds(3),
From = 0,
To = 300
};
Storyboard.SetTarget(animation, MyRectangle);
Storyboard.SetTargetProperty(animation, new PropertyPath(WidthProperty));
_storyboard = new Storyboard();
_storyboard.Children.Add(animation);
_storyboard.Completed += StoryboardOnCompleted;
}
private void StartButton_OnClick(object sender, RoutedEventArgs e)
{
_storyboard.Begin(this, true);
}
private void StopButton_OnClick(object sender, RoutedEventArgs e)
{
_storyboard.SkipToFill(this);
Debug.WriteLine(@"SkipToFill");
}
private void StoryboardOnCompleted(object sender, EventArgs eventArgs)
{
Debug.WriteLine(@"Completed");
}
}
Storyboard
を開始し、その後、それを停止するStopButton
をクリックしStartButton
をクリックします。出力されます:だから
を完了
- SkipToFill
- は、私の質問:
Completed
イベントにする方法は、直ちに解雇しましたか?すなわち、出力することができるようにするには:-
SkipToFill
- 完成
これは可能ではないようです。なぜあなたはそのような行動を必要としますか? – Clemens
デザインに関しては問題です。 'Storyboard'は、' Start'メソッドと 'Stop'メソッドを公開する' MyPlayer'という名前のクラスにラップされています。 'Stop'メソッドを呼び出し、' Completed'イベントで更新された 'MyPlayer'の' Property'を取得したいと思います。実際には財産ではなく、そのようなものです。あなたは 'MyPlayer'のイベントが必要だと言うかもしれませんが、それは私が望むものではありません。 – Iron