改变行颜色
通过行样式进行设置,这里使用了一个转换器,可以根据表格单元格数据满足不同条件时,将行的背景色设置为不同的颜色,参考部分代码如下:
xmlns:dxg:"http://schemas.devexpress.com/winfx/2008/xaml/grid" <dxg:TableView> <dxg:TableView.RowStyle> <Style TargetType="dxg:RowControl"> <Setter Property="Background"> <Setter.Value> <Binding Converter="{StaticResource BackGroundConverter}" Path="Row"></Binding> </Setter.Value> </Setter> </Style> </dxg:TableView.RowStyle> </dxg:TableView>
//BackGroundConverter.cs public class BackgoundColorConvert : IValueConverter{ public object Convert(object value, Type targetlype, object parameter, CultureInfo culture){ if (value != nu11){ //转成实体对象,可使用它的属性进行条件判断 ContractModel contractModel = value as ContractMode1; if(contractModel.NotInvoicedAmount < 0){ return Brushes. IndianRed: }else{ return null; } }else{ return null; } } public object ConvertBack(object value, Type targetlype, object parameter, Culturelnfo culture){ throw new NotImplementedException (); } }
改变行选中的颜色
当你使用上面的代码进行行颜色设置时,会发现行选中的颜色没办法改变了,可以增加如下代码实现:
<Style.Triggers> <Trigger Property="dxg:GridViewBase.IsFocuseRow" Value="True"> <Setter Property="Background" Value="#cfeafc"></Setter> </Trigger> </Style.Triggers>
使用合并行之后,改变选中颜色
这里用的是devexpress15版本,默认设置表格单元格合并属性AllowCellMerge=”True”之后,选中行之后,行背景色没有改变,如何在合并单元格之后,选中能够改变行颜色,我们通过设置单元格样式来实现,参考代码如下:
xmlns:dxg:"http://schemas.devexpress.com/winfx/2008/xaml/grid" xmlns:dxgt:"http://schemas.devexpress.com/winfx/2008/xaml/grid/themekeys" <dxg:TableView> <dxg:TableView.CellStyle> <!--BaseOn设置一个基础样式--> <Style BaseOn="{StaticResource {dxgt:GridRowThemeKey ResourceKey=LightweightCellStyle}}" TargetType="dxg:LightweightCellStyle"> <Style.Triggers> <Trigger Property="dxg:GridViewBase.IsFocuseRow" Value="True"> <Setter Property="Background" Value="#cfeafc"></Setter> </Trigger> </Style.Triggers> </Style> </dxg:TableView.CellStyle> </dxg:TableView>