I have a DataTemplate that is displaying objects with three fields, e.g.:
Name = "Font Color"
Value = "Orange"
Editable = "True"
but I want to display them as e.g.:
Font Color: Orange Editable
But I'm having trouble finding the syntax to use Triggers here in order to e.g. display "Editable" when the field Editable="True"
Does anyone know the syntax to do this?
The following code results in "Binding cannot be used in Property":
<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>
-
Would it work to use a
TextBlock
instead of aLabel
?TextBlock
does have aText
property that you should be able to bind to in this case.If you really want to use a
Label
, another approach would be to create twoDataTemplate
's - one for the editable case, and another for non-editable. You can then bind theContentTemplate
property to the appropriate template.Update: After looking into it some more, it looks like
Trigger
does not support binding for itsProperty
attribute. However,DataTrigger
does support this:<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>
You should be able to modify the
Binding
attribute to bind to your XML data source instead of do the value of another control.Edward Tanguay : I tried that but still get the error that I can't have the binding in the property. I don't see how to tell it in my trigger to: look at the value of the "Editable" property in the current object to see if it is "True", lost in the syntax jungle here.
0 comments:
Post a Comment