最近在使用WPF的时候,遇到某个列的值须要根据内容不一样进行转换显示的需求。尝试了一下,大概有三种方式能够实现:学习
一、传统的Binding方法,后台构造好数据,绑定就行。blog
二、转换器方法(Converter),绑定后,触发转换器,转换器负责把值转换成须要的内容。get
三、DataTrigger方法,直接在xaml里面对数据进行处理,展现所须要的内容。源码
这里主要学习了怎么使用第3种方法。写下来,防止忽然想找的时候还得去翻源码。class
<DataGridTemplateColumn Header="数据包是否下载" Width="140"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock> <TextBlock.Style> <Style TargetType="TextBlock" BasedOn="{StaticResource TextBlockBaseStyle}"> <Style.Triggers> <DataTrigger Binding="{Binding Path= DevIsDownload}" Value="False"> <Setter Property="Text" Value="否"></Setter> <Setter Property="Foreground" Value="Red"></Setter> </DataTrigger> <DataTrigger Binding="{Binding Path= DevIsDownload}" Value="True"> <Setter Property="Text" Value="是"></Setter> <Setter Property="Foreground" Value="Green"></Setter> </DataTrigger> </Style.Triggers> </Style> </TextBlock.Style> </TextBlock> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn>
根据绑定的DevIsDownload列的内容(bool类型),来触发显示效果,若是为false,则前台显示为 红色的“否”字。若是为true,则前台显示为 绿色的“是”字。后台