C#-DevExpress改变表格行颜色

2023-04-06 17:18:11 浏览数 (3)

改变行颜色

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

代码语言:javascript复制
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>
代码语言:javascript复制
//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 ();
    }
}

改变行选中的颜色

当你使用上面的代码进行行颜色设置时,会发现行选中的颜色没办法改变了,可以增加如下代码实现:

代码语言:javascript复制
<Style.Triggers>
    <Trigger Property="dxg:GridViewBase.IsFocuseRow" Value="True">
        <Setter Property="Background" Value="#cfeafc"></Setter>
    </Trigger>
</Style.Triggers>

使用合并行之后,改变选中颜色

这里用的是devexpress15版本,默认设置表格单元格合并属性AllowCellMerge=”True”之后,选中行之后,行背景色没有改变,如何在合并单元格之后,选中能够改变行颜色,我们通过设置单元格样式来实现,参考代码如下:

代码语言:javascript复制
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>

0 人点赞