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 TextBlockinstead of aLabel?TextBlockdoes have aTextproperty 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 theContentTemplateproperty to the appropriate template.Update: After looking into it some more, it looks like Triggerdoes not support binding for itsPropertyattribute. However,DataTriggerdoes 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 Bindingattribute 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