在标签上设置触发器的XAML语法是什么?

Edw*_*uay 3 xaml triggers

我有一个显示三个字段对象的DataTemplate,例如:

Name = "Font Color"
Value = "Orange"
Editable = "True"
Run Code Online (Sandbox Code Playgroud)

但我想将它们显示为例如:

字体颜色:橙色可编辑

但我在找到使用触发器的语法时遇到问题,以便在字段Editable ="True"时显示"Editable"

有谁知道这样做的语法?

以下代码导致"绑定不能在属性中使用":

<DataTemplate x:Key="settingsItemTemplate">
    <StackPanel Orientation="Horizontal">
        <Label Content="{Binding XPath=Name}" ContentStringFormat=" {0}:"/>
        <Label Content="{Binding XPath=Value}"/>
        <Label>
            <Label.Triggers>
                <Trigger Property="{Binding XPath=Editable}" Value="True">
                    <Setter Property="Content" Value="Editable"/>
                </Trigger>
                <Trigger Property="{Binding XPath=Editable}" Value="False">
                    <Setter Property="Content" Value="NOT Editable"/>
                </Trigger>
            </Label.Triggers>
        </Label>
    </StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

And*_*ndy 10

是否可以使用TextBlock而不是LabelTextBlock确实有一个Text你应该能够绑定到这种情况的属性.

如果你真的想要使用a Label,另一种方法是创建两个DataTemplate- 一个用于可编辑的情况,另一个用于不可编辑的情况.然后,您可以将该ContentTemplate属性绑定到适当的模板.

更新:再看一下之后,看起来Trigger它不支持绑定其Property属性.但是,DataTrigger支持这个:

<StackPanel>
    <CheckBox Name="EditableCheckBox">Is Editable</CheckBox>
    <Label>
        <Label.Resources>
            <Style TargetType="{x:Type Label}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=EditableCheckBox, Path=IsChecked}" Value="True">
                        <Setter Property="Content" Value="Editable" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ElementName=EditableCheckBox, Path=IsChecked}" Value="False">
                        <Setter Property="Content" Value="NOT Editable" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Label.Resources>
    </Label>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

您应该能够修改Binding属性以绑定到XML数据源,而不是执行另一个控件的值.