WPF Triggers WPF Triggers wpf wpf

WPF Triggers


Set the content of the DataTemplate to the TextBlock and set the visibility based on the trigger. I'm not sure what the second DataTrigger is for because it is referring to a target name that does not exist in the current scope, so I don't know how this fits in.

<DataTemplate>    <TextBlock x:Name="block" Text="XXX" Visibility="Collapsed"/>    <DataTemplate.Triggers>        <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1">            <Setter TargetName="block" Property="Visibility" Value="Visible"/>        </DataTrigger>        <!--<DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2">            <Setter TargetName="cablePrecedenceIndicatorImage" Property="Source" Value="Resources\Images\small_exclamation_mark.png"/>        </DataTrigger>-->    </DataTemplate.Triggers></DataTemplate>


Brilliant ! Thanks heaps :)

This is what I ended up with. If PrecedenceIndicator =1, display !, if PrecendenceIndicator =2, display !!.

<wpfToolkit:DataGridTemplateColumn Header="A" Width="20">    <wpfToolkit:DataGridTemplateColumn.CellTemplate>        <DataTemplate>            <TextBlock>                <TextBlock x:Name="block1" Text="&#x21;" Visibility="Collapsed"/>                <TextBlock x:Name="block2" Text="&#x21; &#x21;" Visibility="Collapsed"/>            </TextBlock>            <DataTemplate.Triggers>                <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1">                    <Setter TargetName="block1" Property="Visibility" Value="Visible"/>                </DataTrigger>               <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2">                    <Setter TargetName="block2" Property="Visibility" Value="Visible"/>                </DataTrigger>            </DataTemplate.Triggers>        </DataTemplate>    </wpfToolkit:DataGridTemplateColumn.CellTemplate></wpfToolkit:DataGridTemplateColumn>


You need to change the type of the DataTemplate, based on your trigger, from an Image to a TextBox.

<DataTemplate>    <ContentPresenter x:Name="Presenter" />    <DataTemplate.Triggers>        <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1">            <Setter TargetName="Presenter" Property="Content">                <Setter.Value>                    <TextBlock Text="XXX" />                </Setter.Value>            </Setter>        </DataTrigger>        <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2">            <Setter TargetName="cablePrecedenceIndicatorImage" Property="Source" Value="Resources\Images\small_exclamation_mark.png"/>        </DataTrigger>    </DataTemplate.Triggers></DataTemplate>