2010-11-09 75 views
0

Silverlight 4,但我不確定這是否也適用於WPF。在代碼中設置Storyboards TargetName

這是一些代碼,我必須循環控制,併爲它們設置動畫。第一個完美,但第二次我得到

System.InvalidOperationException:2218發生錯誤。 ...在MS.Internal.XcpImports.SetValue(...

它似乎不喜歡把自己的目標名稱設置第二次我也試過,行:

sbShowPopup.SetValue(Storyboard.TargetNameProperty, toPopup.Name); 

代碼(這是一個有點難看 - 只是做一個POC現在):

 Messenger.Default.Register<Item>(this, "O", I => { 
      if (AvailablePopups.Peek() == null) { 
       MessageBox.Show("Nothing available"); 
       return; 
      } 

      Control toPopup = AvailablePopups.Pop(); 
      toPopup.DataContext = I; 

      try { 
       Storyboard.SetTargetName(sbShowPopup, toPopup.Name); 
      } catch (Exception E) { 
       MessageBox.Show(E.ToString()); 
      } 

      this.sbShowPopup.Begin(); 
     }); 

回答

1

如果別人絆倒在這裏,你有一個目標設置爲別的東西之前,停止動畫:

sbShowPopup.Stop();