WPF的DataGrid RowStyle选定行不改变背景色和前景色

问题描述 投票:6回答:2

我使用Visual Studio 2012在Windows 7上我需要知道为什么网格的选定行下面的风格不适合前景色和背景色工作,但工作完全正常像BorderBrush和了borderThickness等其他属性?虽然我可以看到他们不断变化的同时鼠标移到网格行。

<Style x:Key="gridRowStyle" TargetType="{x:Type DataGridRow}">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="PeachPuff"/>
            <Setter Property="Foreground" Value="BlueViolet"/>
        </Trigger>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="PeachPuff"/>
            <Setter Property="Foreground" Value="BlueViolet"/>
            <Setter Property="BorderBrush" Value="BlueViolet" />
            <Setter Property="BorderThickness" Value="2" />

        </Trigger>
    </Style.Triggers>
</Style>

这里是我如何使用网格。

<DataGrid RowStyle="{StaticResource gridRowStyle}">

我强调,知道“为什么”,而不是解决方案,因为我已经有了解决问题,如果我使用的网格单元格样式,而不是rowstyle像下面的问题:

<Style x:Key="gridCellStyle" TargetType="{x:Type DataGridCell}">
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="PeachPuff"/>
            <Setter Property="Foreground" Value="BlueViolet"/>
        </Trigger>
    </Style.Triggers>
</Style>
wpf datagrid background-color
2个回答
0
投票

在DataGridCell的默认样式具有以下默认样式触发。

<Trigger Property="IsSelected" Value="True">
    <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
    <Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>

所以,如果你写的DataGridRow触发,那么这将仅适用于在视觉树放在DataGridCell之前的元素。

因此,要改变背景和前景,而选择,你必须写在DataGridCell风格的触发或从样式删除默认的触发。


0
投票

只需在DataGrid中的行级删除此attributs,它们的优先级高于触发属性。

开始

© www.soinside.com 2019 - 2024. All rights reserved.