WPF:如何突出显示满足条件的DataGrid的所有单元格?
(wpftoolkit)数据网格通常表示一组对象,其中行表示每个对象,列表示重复属性 我不是这样用的。我用它来表示两个集合之间的“交集”。行表示集合A中的对象,列表示集合B中的对象。x,y处的单元格表示fn中的某个值(collectionA[x],collectionB[y]) 这个很好用。现在我希望能够查询单元格值。我希望用户能够做一些事情,比如高亮显示值大于0的所有单元格?WPF:如何突出显示满足条件的DataGrid的所有单元格?,wpf,datagrid,Wpf,Datagrid,(wpftoolkit)数据网格通常表示一组对象,其中行表示每个对象,列表示重复属性 我不是这样用的。我用它来表示两个集合之间的“交集”。行表示集合A中的对象,列表示集合B中的对象。x,y处的单元格表示fn中的某个值(collectionA[x],collectionB[y]) 这个很好用。现在我希望能够查询单元格值。我希望用户能够做一些事情,比如高亮显示值大于0的所有单元格? 如何使用datagrid实现这一点 一种方法是创建以相应方式运行的数据单元模板(通过controltemplates.
如何使用datagrid实现这一点 一种方法是创建以相应方式运行的数据单元模板(通过controltemplates.triggers集合) 另一种方法是创建数据单元样式,并在给定绑定具有特定值时使用样式触发器设置背景(通过style.triggers集合) 或者您可以使用混合方法 在数据单元模板中,可能有一个包含所有内容的边框元素。例如,可以为该边框元素创建内联样式
<Border Width="Auto" Height="Auto" Padding="6,10,6,10" CornerRadius="0,0,20,20">
<Border.Style>
<Style TargetType="{x:Type Border}" >
<Setter Property="Background" Value="White" />
<Style.Triggers>
<DataTrigger Binding="{Binding Highlighted}" Value="True">
<Setter Property="Background" Value="{StaticResource GreenGradientSuccessBrush}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
如果它位于数据模板中,则border元素的datacontext将是包含的对象,并且当内容的“Highlighted”属性(假设内容是具有“Highlighted”布尔属性的类)为“True”时,将触发border触发器
如果您的内容是一个整数,并且希望触发器在大于零时触发,则必须使用
<DataTrigger Binding="{Binding, Converter={StaticResource GreaterThanZeroConverter}}" Value="True">
其中,GreaterThanZeroConverter是一个合适的值转换器。一种方法是创建一个以相应方式运行的数据单元模板(通过controltemplates.triggers集合) 另一种方法是创建数据单元样式,并在给定绑定具有特定值时使用样式触发器设置背景(通过style.triggers集合) 或者您可以使用混合方法 在数据单元模板中,可能有一个包含所有内容的边框元素。例如,可以为该边框元素创建内联样式
<Border Width="Auto" Height="Auto" Padding="6,10,6,10" CornerRadius="0,0,20,20">
<Border.Style>
<Style TargetType="{x:Type Border}" >
<Setter Property="Background" Value="White" />
<Style.Triggers>
<DataTrigger Binding="{Binding Highlighted}" Value="True">
<Setter Property="Background" Value="{StaticResource GreenGradientSuccessBrush}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
如果它位于数据模板中,则border元素的datacontext将是包含的对象,并且当内容的“Highlighted”属性(假设内容是具有“Highlighted”布尔属性的类)为“True”时,将触发border触发器
如果您的内容是一个整数,并且希望触发器在大于零时触发,则必须使用
<DataTrigger Binding="{Binding, Converter={StaticResource GreaterThanZeroConverter}}" Value="True">
其中大于零的转换器是合适的值转换器