我正在尝试将DataTrigger
应用于Button
,这取决于当前所选TreeView
项的属性。我的想法是,我想根据所选项目的属性更改Button
的文本。
我看起来像这样:
<Button x:Name="m_AddObject" Margin="192.708,0.909,6,6.363" Click="AddObject_Click" >
<DataTrigger Binding="{Binding ElementName=ObjectTreeView, Path=SelectedItem.Removable}" Value="true">
<Setter TargetName="m_AddObject" Property="Content" Value="Remove" />
</DataTrigger>
</Button>
但我无法编译。 Setter抱怨“内容”无效,因为它没有合格的类型名称,但如果我将其更改为“Button.Content”,则会抱怨“对象引用未设置为对象的实例”。
我也尝试过:
<Setter TargetName="m_AddObject.Content" Value="Remove" />
虽然编译,但它也没有用。
我很难过。
有什么想法吗?
谢谢!
答案 0 :(得分:1)
DataTriggers应该在按钮的样式中定义。您在上面尝试做的主要是使用DataTriggers作为按钮的“标签”(“内容”,如WPF所说)(而不是“OK”)。
这是临时性的,所以它可能不完全正确,但它更接近你想要的东西:
<Button x:Name="m_AddObject"
Margin="192.708,0.909,6,6.363"
Click="AddObject_Click">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ObjectTreeView, Path=SelectedItem.Removable}" Value="True">
<Setter Property="Content" Value="Remove" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>