如何更改所选数据网格行的蓝色

Posted

技术标签:

【中文标题】如何更改所选数据网格行的蓝色【英文标题】:How to change the blue color of selected datagrid rows 【发布时间】:2012-07-26 11:58:40 【问题描述】:

好吧,我已经看到了这样做的代码:

<DataGrid.RowStyle>
    <Style TargetType="DataGridRow">

        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="Black"/>
                <Setter Property="Foreground" Value="Green">
                </Setter>
            </Trigger>
        </Style.Triggers>

        <Setter Property="Background">                        
            <Setter.Value>
                <MultiBinding Converter="StaticResource ucComponentesColorFilaMultiValueConverter">
                    <Binding ElementName="dgdComponentes" Path="ItemsSource" />
                    <Binding ElementName="dgdComponentes" Path="SelectedItems" />
                    <Binding ElementName="CurrentItem" />
                </MultiBinding>
            </Setter.Value>
        </Setter>
    </Style>
</DataGrid.RowStyle>

确实代码是样式触发器,setter属性是针对其他情况的,但是我添加了这个代码会影响结果。

我想改变选中的行背景,默认是蓝色的,我想根据一些条件换成其他颜色。例如,如果添加了一个寄存器,那么如果我选择该行,它将是绿色的,如果不选择该行,它将是浅绿色的。

我可以根据需要更改行的颜色,但是当我选择它时,总是蓝色的。

谢谢。

【问题讨论】:

【参考方案1】:

为此,您需要以编程方式指定行的颜色

<Setter Property="Background" Value="Binding Path=BgColor"/>  

BgColor 属性添加到绑定到网格的对象。根据您的条件设置 BgColor(即,如果对象已注册,则 BgColor 为“绿色”)

【讨论】:

我无法将属性添加到对象,因为它是一个 STE(实体框架的实体)。但是我觉得这个东西,如果可以通过代码来做,那么在axml中是可以做到的。 您始终可以在您的域模型(在本例中为您的 STE)上创建一个视图模型,其中包含渲染视图所需的附加属性【参考方案2】:

你可以试试这样的东西……

       <SolidColorBrush x:Key="x:Static SystemColors.HighlightBrushKey" Color="Transparent" />
       <SolidColorBrush x:Key="x:Static SystemColors.ControlBrushKey" Color="Transparent" />

【讨论】:

这个是对的,选中的item背景颜色其实是系统颜色,所以你要覆盖Resources中的SystemColor。通常我使用&lt;DataGrid.Resources&gt;,所以这种风格只适用于DataGrid,而不是应用程序中的每个选定项目。另外,我认为您只需要HighlightBrushKey,但我不记得了。 ControlBrushKey 无关紧要。

以上是关于如何更改所选数据网格行的蓝色的主要内容,如果未能解决你的问题,请参考以下文章

设置所选页码 - 剑道网格

如何更改所选 SlidingMenu 行的背景颜色并保持不变,直到选择其他行?

如何更改所选范围内所有行的样式?

选择后更改整个数据网格行的背景颜色

选择行时设置文本WPF DataGrid行的颜色

如何从 agggrid 中的选定行中删除蓝色