改变行颜色
通过行样式进行设置,这里使用了一个转换器,可以根据表格单元格数据满足不同条件时,将行的背景色设置为不同的颜色,参考部分代码如下:
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>