是否可以将DataGridCell的样式迁移到单独文件且保留绑定触发功能?
解决方案
方案1:仅适配Position列的专用样式
直接把样式抽入单独的资源字典(比如Styles/GridStyles.xaml),指定唯一键名即可:
<!-- 单独资源文件中的样式定义 --> <Style x:Key="PositionColumnCellStyle" TargetType="DataGridCell"> <Style.Triggers> <DataTrigger Binding="{Binding Path=Position, Converter={StaticResource ValueToBooleanConverter}}" Value="True"> <Setter Property="Background" Value="Yellow"/> </DataTrigger> </Style.Triggers> </Style>
页面中引用样式前,先确保资源字典已引入,且转换器ValueToBooleanConverter在父级资源中已定义:
<DataGridTextColumn Binding="{Binding Path=Position}" Header="Position" CellStyle="{StaticResource PositionColumnCellStyle}"/>
方案2:可复用给任意绑定列的通用样式
如果要让同个高亮逻辑适配多个不同绑定属性的列,不需要每个属性都写单独样式,直接绑定单元格自身的Content属性即可:
<!-- 单独资源文件中的通用样式定义 --> <Style x:Key="ValueMatchHighlightCellStyle" TargetType="DataGridCell"> <Style.Triggers> <DataTrigger Binding="{Binding Path=Content, RelativeSource={RelativeSource Self}, Converter={StaticResource ValueToBooleanConverter}}" Value="True"> <Setter Property="Background" Value="Yellow"/> </DataTrigger> </Style.Triggers> </Style>
所有需要同个高亮逻辑的列都可以直接引用这个样式,不需要修改绑定逻辑:
<DataGridTextColumn Binding="{Binding Path=Position}" Header="Position" CellStyle="{StaticResource ValueMatchHighlightCellStyle}"/> <DataGridTextColumn Binding="{Binding Path=OtherProperty}" Header="其他字段" CellStyle="{StaticResource ValueMatchHighlightCellStyle}"/>
内容的提问来源于stack exchange,提问作者ed22
相关产品推荐
相关产品推荐

