我找到一個生成的故事板名稱有問題。 我不能使用類變量,因爲此代碼被多次調用,並且返回是異步的。查找動態生成的故事板實例(WPF)
你可以看到我的其他問題的更多信息:Here
我的代碼:
private void refreshPostIt(int index)
{
Button btn = // Button to rotate
Storyboard sb = new Storyboard();
sb.Name = "sb" + postItIndex;
Storyboard.SetTarget(rotate, btn);
Storyboard.SetTargetName(rotate, btn.Name);
Storyboard.SetTargetProperty(rotate, new PropertyPath("(UIElement.RenderTransform).(RotateTransform.Angle)"));
sb.Children.Add(rotate);
sb.Begin(btn, true);
// Asynchronous call
BackgroundWorker bgw = new BackgroundWorker();
bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted);
bgw.RunWorkerAsync(postItIndex);
}
private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
int postItIndex = // Retrieved from e.Arguments
Button btn = // Find the Button thanks to the postItIndex
Storyboard sb = // Here is my problem, how to find the Storyboard
if (sb != null)
{
// Stop rotation
//sb.Stop(btn);
}
}
你有這個問題,因爲你沒有使用MVVM。如果你的viewmodel有一個「postIt」的集合,每個人都有一個IsRefreshing屬性,你可以BeginStoryBoard並停止它。我會發佈一個答案,解釋如何設置XAML,但適應集合和UI是數據綁定在你身上... –