2011-08-27 76 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