根据DataTrigger更改Button的Click事件

时间:2009-05-14 15:21:50

标签: c# wpf button datatrigger

我正在尝试在触发DataTrigger时更改Button的Click属性/事件,但我不确定这是否是执行此操作的最佳方法。事实上,它甚至不会编译:)

我看起来像这样:

<Style TargetType="{x:Type Button}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=ObjectTreeView, Path=SelectedItem.Replaceable}" Value="False">
            <Setter Property="Content" Value="Add" />
            <Setter Property="Button.Click" Value="AddObject_Click" />
        </DataTrigger>
        <DataTrigger Binding="{Binding ElementName=ObjectTreeView, Path=SelectedItem.Replaceable}" Value="True">
            <Setter Property="Content" Value="Replace" />
            <Setter Property="Button.Click" Value="ReplaceObject_Click" />
        </DataTrigger>
    </Style.Triggers>            
</Style>

编译给我一条错误消息,说“找不到样式属性'点击'类型'System.Windows.Controls.Button'”

有什么建议吗?如果不可能,还有哪些替代方案?

谢谢!

编辑:

我以为我找到了使用EventSetter的解决方案,但Triggers中不支持EventSetters。我认为可行的是:

<EventSetter Event="Button.Click" Handlder="AddObject_Click" />

但就像我说的那样,这一点得到了支持。

3 个答案:

答案 0 :(得分:2)

只有一次点击事件并且在那种情况下,基于您的DataTrigger的if语句会不会更容易?

答案 1 :(得分:1)

点击不是属性,它是一个事件。按钮具有属性IsPressed,当按下按钮时该属性变为true。你可以尝试使用它。

答案 2 :(得分:0)

请尝试使用按钮的Command属性,而不是使用Click事件。您应该能够根据触发器切换它指向的命令。