2009-02-11 31 views
3

我有一个带有三个字段中显示对象一个DataTemplate,如:在标签上设置触发器的XAML语法是什么?

Name = "Font Color" 
Value = "Orange" 
Editable = "True" 

,但我想显示他们作为例如:

字体颜色:橙色可编辑

但我很难找到在这里使用触发器的语法,例如当字段Editable =“True”时显示“可编辑”

有没有人知道这样做的语法?

在下面的代码会导致“绑定不能在物业使用”:

<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> 
+0

我用另一个解决方案更新了我的答案 - 这是否适合您? – Andy 2009-02-11 14:21:16

回答

10

将它的工作使用TextBlock,而不是一个LabelTextBlock确实有一个Text属性,您应该能够绑定到这种情况。

如果您确实想要使用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> 

你应该能够修改Binding属性绑定到XML数据源,而不是做其他控件的值。

+0

我尝试过,但仍然得到错误,我无法在属性中进行绑定。我没有看到如何在触发器中告诉它:查看当前对象中“可编辑”属性的值,看它是否为“真”,在此语法丛林中丢失。 – 2009-02-11 12:50:39

相关问题