2

我正在尝试在触发 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" />

但就像我说的,这完全得到支持。

4

3 回答 3

2

仅具有一个单击事件并在该事件中基于您的 DataTrigger 的 if 语句不是更容易吗?

于 2009-05-14T15:24:19.130 回答
1

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

于 2009-05-14T17:28:16.447 回答
0

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

于 2009-05-14T18:04:47.357 回答