我一直在尝试为我们的代码添加自定义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。有什么建议吗?
答案 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添加的别名。如果您需要更多信息,请告诉我。