2014-10-08 57 views
1

我一直在試圖添加一個自定義的TriggerAction到我們的代碼。以下是XAML片段:添加我自己的WPF TriggerAction

<Style x:Key="ToolBarButtonStyle" TargetType="Button"> 
    <Style.Triggers> 
     <EventTrigger RoutedEvent="PreviewMouseDown"> 
      <actions:MyAction /> 
     </EventTrigger> 
    </Style.Triggers> 
    ... 

MyAction定義如下:

public class MyAction: TriggerAction<DependencyObject> 
    { 
    protected override void Invoke(object parameter) 
    { 
     // Do something 
    } 
    } 

然而,當我運行代碼,我得到以下異常:

1)給定對象必須是TriggerAction的實例或派生類型。

導致:'將值添加到類型'System.Windows.TriggerActionCollection'的集合引發了一個異常。'行號「29」和行位置「15」。

我正在運行Visual Studio 2010,面向.Net 4.0。有什麼建議麼?

回答

1

添加在樣式的「事件觸發」任何TriggerAction預計該項行動型的

System.Windows.TriggerAction 

您的自定義操作「我的行動」使用

System.Windows.Interactivity.TriggerAction<T> (Generic Type) 

,因此這個錯誤。你可以嘗試以下。這似乎適用於你的情況。

<Button Content="Custom Action" Width="150" Height="50"> 
     <interact:Interaction.Triggers> 
      <interact:EventTrigger EventName="PreviewMouseDown"> 
       <actions:MyAction></actions:MyAction> 
      </interact:EventTrigger> 
     </interact:Interaction.Triggers>    
    </Button> 

這裏,交互是爲交互添加的別名。如果您需要更多信息,請告訴我。

+0

修復了例外(謝謝!)。不幸的是,Interaction.Triggers不能添加到Style中,所以這意味着我必須將觸發器添加到我使用按鈕的每個位置。好吧... – Dan 2014-10-09 17:21:10