添加我自己的WPF TriggerAction

时间:2014-10-08 17:49:36

标签: .net wpf

我一直在尝试为我们的代码添加自定义TriggerAction。以下是XAML片段:

<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的实例或派生类型。

     

导致:&#39;为类型#System.Swows.TriggerActionCollection&#39;的集合添加值。抛出异常。&#39;行号&#39; 29&#39;和行位置&#39; 15&#39;。

我正在运行Visual Studio 2010,目标是.Net 4.0。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在&#39;事件触发器&#39;下添加任何TriggerAction。 Styles期望该操作的类型为

System.Windows.TriggerAction

您的自定义操作&#39;我的行动&#39;使用

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>

此处,interaction是为Interactivity添加的别名。如果您需要更多信息,请告诉我。