C# 更改按钮';s基于数据触发器的单击事件

C# 更改按钮';s基于数据触发器的单击事件,c#,wpf,button,datatrigger,C#,Wpf,Button,Datatrigger,我试图在触发DataTrigger时更改按钮的Click属性/事件,但我不确定这是否是最好的方法。事实上,它甚至不会编译:) 我所拥有的是这样的: <Style TargetType="{x:Type Button}"> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=ObjectTreeView, Path=SelectedItem.Replaceable}" Valu

我试图在触发DataTrigger时更改按钮的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”上找不到样式属性“Click”

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

谢谢

编辑:

我认为我找到了使用EventSetter的解决方案,但是触发器中不支持EventSetter。我认为会起作用的是:

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


但正如我所说,这是完全受支持的。

只需单击一次事件,在该事件中,基于DataTrigger的if语句不是一个属性,而是一个事件,这难道不容易吗。按钮有一个属性IsPressed,当按下按钮时该属性变为true。您可以尝试使用它。

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

当然。这是我以前拥有的,但如果可能的话,我正在寻找一个基于xaml的解决方案。我想我正在寻找的是一个EventSetter。而且看起来触发器不支持EventSetter。