Includes:
xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView"Trying with Style.Triggers
<UserControl> <UserControl.Resources> <Style x:Key="Test" TargetType="TextBlock"> <Style.Triggers> <DataTrigger Binding="{Binding Count}" Value="{x:Null}"> <Setter Property="Text" Value="~"/> </DataTrigger> </Style.Triggers> </Style> </UserControl.Resources></UserControl>Trying with DataTemplate.Triggers:
<telerik:RadGridView.Columns> <telerik:GridViewDataColumn> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock x:Name="txtTest" Text="{Binding Count}" /> <DataTemplate.Triggers> <DataTrigger Binding="{Binding Count}" Value="x:Null"> <Setter TargetName="txtTest" Property="Text" Value="~"/> </DataTrigger> </DataTemplate.Triggers> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn></telerik:RadGridView.Columns>7 Answers, 1 is accepted
The sample below describes the correct approach in this case through TextBlock's Style:
<telerik:RadGridView AutoGenerateColumns="False" x:Name="RadGridView1"> <telerik:RadGridView.Resources> <Style x:Key="StatusBlock" TargetType="TextBlock">
<!--<The following Setter means that the default Text of the TextBlock element is bound to the property of this object>-->
<Setter Property="Text" Value="{Binding Path=DigitalSignature}"/> <Style.Triggers> <DataTrigger Binding="{Binding Path=DigitalSignature}" Value="{x:Null}"> <Setter Property="TextBlock.Text" Value="~"/> </DataTrigger> </Style.Triggers> </Style> </telerik:RadGridView.Resources> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn Header="Subject" DataMemberBinding="{Binding Subject}"/> <telerik:GridViewDataColumn Header="Sender" DataMemberBinding="{Binding Sender}"/> <telerik:GridViewDataColumn Header="Size" DataMemberBinding="{Binding Size}"/> <telerik:GridViewDataColumn Header="DigitalSignature"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Style="{StaticResource StatusBlock}"/> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn> </telerik:RadGridView.Columns> </telerik:RadGridView>I will be waiting for your response!
Vanya Pavlova
the Telerik team
Considering the fact that this thread is in the forum related to the RadGridView/Silverlight, may you clarify whether you are working with the Silverlight or WPF version of RadGridView?
This code works for the WPF as expected and you may check the attached project. In case of any misunderstanding it could be great if you could share this info with us.
If you are in Silverlight there are many approach you may use, as to create a converter as shown below:
<telerik:GridViewDataColumn Header="DigitalSignature"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding DigitalSignature,Converter={StaticResource con}}"/> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> </telerik:GridViewDataColumn>
Vanya Pavlova
the Telerik team
Hi, I am having trouble with Data template triggers. I want to show images based on values in my collection. Following is my code it is not working as no image displays on column. Can anyone help me please.
<telerik:GridViewDataColumn Header="Status">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<Image Name="Image" Width="15" Height="15" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IconHeader}" Value="N">
<Setter TargetName="Image" Property="Source" Value="/Project;component/images/image.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding IconHeader}" Value="Y">
<Setter TargetName="Image" Property="Source" Value="/Project;component/images/image2.png"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewDataColumn>
Thank you for the provided code snippet.
I double check this on my side and indeed the DataTriggers are not respected in the CellTemplate. Therefore I have logged feedback item in our Feedback Portal where you can track its progress. As a workaround, you can use Style Triggers instead. Check the following code snippet:
<telerik:GridViewDataColumn Header="Status"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <Image Name="Image" Width="15" Height="15"> <Image.Style> <Style TargetType="Image"> <Style.Triggers> <DataTrigger Binding="{Binding IconHeader}" Value="N"> <Setter Property="Source" Value="/Cell_Image;component/images/paste.png"/> </DataTrigger> <DataTrigger Binding="{Binding IconHeader}" Value="Y"> <Setter Property="Source" Value="/Cell_Image;component/images/Shapes.png"/> </DataTrigger> </Style.Triggers> </Style> </Image.Style> </Image> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate></telerik:GridViewDataColumn>Hope this workaround will for you. I have updated your Telerik Points for bringing this behavior to our attention.
Regards,
Dinko
Progress Telerik
