2011-08-27 58 views
0

我正嘗試在Silverlight中創建一個自定義事件來觸發動畫。儘管事件正在被觸發,但動畫不起作用。以下是相關代碼:Silverlight自定義EventTrigger

namespace SilverlightApplication1 
{ 
    public partial class MainPage : UserControl 
    { 
     public MainPage() 
     { 
      MyEvent += new ChangedEventHandler(UserControl_MyEventHandler); 
      /* Other stuff */ 
     } 
     private void UserControl_MyEventHandler(object sender, RoutedEventArgs e) 
     { 
       MessageBox.Show("MyEventHandler has been called"); 
     } 

     public delegate void ChangedEventHandler(object sender, RoutedEventArgs e); 

     private event ChangedEventHandler MyEvent; 

     private void UserControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
     { 
       if (MyEvent != null) 
        MyEvent(this, e); 
     } 
    } 
} 

的XAML代碼如下:

<UserControl 
... 
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" mc:Ignorable="d" 
x:Class="SilverlightApplication1.MainPage" MouseLeftButtonDown="UserControl_MouseLeftButtonDown"> 

    <Grid x:Name="LayoutRoot" Background="White"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="MyEvent"> 
       <ei:GoToStateAction StateName="Highlighted"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
     ... 
    </Grid> 
</UserControl> 

目前,含有「的MouseLeftButtonDown」是越來越顯示但動畫是沒有得到所謂的消息框。當EventTrigger EventName是MouseLeftButtonDown而不是MyEvent時,動畫確實被調用。請幫助我。謝謝。

回答

0

如果您想觸發某些控件的事件,可以在EventTrigger中設置SourceName。 我想,你的情況在後面的代碼:

VisualStateManager.GoToState(this [or some other object with Highlighted state], "Highlighted", false); 
+0

謝謝。這工作。 :) – Anand