将DataTrigger应用于绑定来自另一个控件的按钮?

时间:2009-05-13 21:55:25

标签: c# wpf datatrigger

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

虽然编译,但它也没有用。

我很难过。

有什么想法吗?

谢谢!

1 个答案:

答案 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>