2012-01-09 81 views
4

我試圖完成這樣的事情:EventTrigger結合事件從DataContext的

<DataTemplate.Triggers> 
    <EventTrigger RoutedEvent="{Binding MyEvent}"> 
     <BeginStoryboard Storyboard="{StaticResource MyAnimation}" /> 
    </EventTrigger> 
</DataTemplate.Triggers> 

MyEvent是從我的DataContext事件。

這不起作用,因爲RoutedEvent不能是綁定表達式。任何想法如何做到這一點? 事實上,我需要EventTrigger和DataTrigger的一些混合...

解決方案與混合SDK:

<Interactivity:Interaction.Triggers> 
    <Interactivity:EventTrigger SourceObject="{Binding}" EventName="MyEvent"> 
     <ei:ControlStoryboardAction ControlStoryboardOption="Play"> 
      <ei:ControlStoryboardAction.Storyboard> 
       <Storyboard> 
        .... 
       </Storyboard> 
      </ei:ControlStoryboardAction.Storyboard> 
     </ei:ControlStoryboardAction> 
    </Interactivity:EventTrigger> 
</Interactivity:Interaction.Triggers> 
+0

爲什麼要觸發?你能不能創建一個啓動你的故事板的命令,並從任何你想要的地方調用該命令的執行? – 2012-01-09 13:51:59

+0

只是爲了澄清..你想添加自定義事件,你可以手動舉起? – 2012-01-09 19:19:37

+0

是的,我在我的ViewModel中有事件,我手動進行。 – bkovacic 2012-01-09 19:28:38

回答

4

InteractivityBlend SDK)使用EventTriggers可以在任何事件觸發任何物體上,本機只有通常只有控制功能的RoutedEvents纔有效。

+0

好的,但如何將其設置爲綁定到來自DataContext的事件?我一直在嘗試很多,無法使其工作... – bkovacic 2012-01-09 17:48:13

+0

@pedala:將'SourceObject'設置爲'{Binding}',將'EventName'設置爲事件的名稱。 – 2012-01-09 17:54:53

+0

我一直在嘗試,並沒有奏效。現在我試着直接在控制上,它工作。可能有問題,因爲它在'DataTemplate'內部? 「DataTemplate」裏面究竟應該放置'Interactivity'?我把它放在'Grid'元素中,因爲我不能將它放在'DataTemplate'的根目錄中,因爲我已經在問題中放置了'Trigger'。 – bkovacic 2012-01-09 18:03:18