DataGrid - AlternatingRowBackground颜色干扰" IsMouseOver"颜色

时间:2014-12-17 19:10:02

标签: c# wpf xaml datagrid

我有DataGrid使用AlternatingRowBackground让自己更容易阅读。在同一网格中,我还根据"IsMouseOver"文件中的Setter Property App.xaml对行进行了背景颜色更改。我遇到的问题是,当鼠标悬停在它上面时,具有交替颜色(它们不是白色)的行不会更改为"IsMouseOver"颜色。基本上AlternatingRowBackground颜色优先于我的RowStyle。当鼠标悬停在彩色行上时,如何使彩色行也发生变化?

的App.xaml:

<!-- DataGrid Row Style -->
    <Style x:Key="RowStyleWithAlternation" TargetType="DataGridRow">
        <Setter Property="SnapsToDevicePixels" Value="True" />
        <Setter Property="Background" Value="GhostWhite"/>
        <Setter Property="FontWeight" Value="Normal"/>
        <Setter Property="ContextMenu" Value="{x:Null}"/>
        <Style.Triggers>
            <Trigger Property="AlternationIndex" Value="1">
                <Setter Property="Background" Value="#FFD0D0E0"/>
            </Trigger>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Purple"/>
            </Trigger>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="#F9F99F" />
            </Trigger>
        </Style.Triggers>
    </Style>

用户控制xaml:

<DataGrid ... AlternatingRowBackground="Gray" RowStyle="{StaticResource RowStyleWithAlternation}" ... />

1 个答案:

答案 0 :(得分:2)

如果您按如下方式更改UserControl.xaml,则此方法有效:

<DataGrid RowStyle="{StaticResource RowStyleWithAlternation}" AlternationCount="2" />

通过行上的AlternationIndex触发器设置背景,该触发器不优先于IsMouseOver。

我在这篇文章中找到了答案:

WPF Style Trigger for DataGridRow Background Color Trumped by AlternatingRowBackground Brush