我有一个显示三个字段对象的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而不是Label?TextBlock确实有一个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数据源,而不是执行另一个控件的值.
| 归档时间: |
|
| 查看次数: |
7476 次 |
| 最近记录: |