C# 更改未聚焦的选定datagrid行的颜色

C# 更改未聚焦的选定datagrid行的颜色,c#,wpf,xaml,C#,Wpf,Xaml,我已经在我的数据网格行上实现了一个上下文菜单。在行上单击鼠标右键时,它会在打开关联菜单之前短暂高亮显示该行。据我理解,这是因为datagrid正在失去焦点 我正在尝试使用SystemColors.ControlBrushKey更改未聚焦但选定的颜色,但没有效果。这是不对的吗?我找到了一些ListBox相关的解决方案,这是公认的解决方案 <Style x:Key="DefaultRowStyle" TargetType="{x:Type DataGridRow}"> <S

我已经在我的数据网格行上实现了一个上下文菜单。在行上单击鼠标右键时,它会在打开关联菜单之前短暂高亮显示该行。据我理解,这是因为datagrid正在失去焦点

我正在尝试使用
SystemColors.ControlBrushKey
更改未聚焦但选定的颜色,但没有效果。这是不对的吗?我找到了一些
ListBox
相关的解决方案,这是公认的解决方案

<Style x:Key="DefaultRowStyle" TargetType="{x:Type DataGridRow}">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Black" />
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Yellow" />
    </Style.Resources>
</Style>


供参考的系统颜色完整列表:

您唯一的选择是从中复制样式XAML并更改其中的颜色设置。XAML中的注释表明,除非您更改样式,否则它们提供的XAML中的一些状态是无法区分的

<VisualState x:Name="Unfocused_Selected">
  <Storyboard>
    <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)">
      <EasingColorKeyFrame KeyTime="0" Value="{StaticResource ControlMediumColor}" />
    </ColorAnimationUsingKeyFrames>
    <ColorAnimationUsingKeyFrames Storyboard.TargetName="DGR_Border" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
      <EasingColorKeyFrame KeyTime="0" Value="{StaticResource ControlDarkColor}" />
    </ColorAnimationUsingKeyFrames>
  </Storyboard>
</VisualState>


编辑:我链接了错误的页面。这就是Silverlight(doh!)的风格。我已经修复了指向WPF样式的链接。我还复制了WPF样式的适用区域。

我为模板复制了
Setter
。当我将它粘贴到我的项目中时,它说
DataGridRow
不作为
System.Windows.Controls
名称空间的一部分存在,我正在查看silverlight样式,试图在
localprimitives
名称空间上访问的所有元素也是如此。我已经更新了WPF.Ha。所以这是可行的,但只是部分有效。仅高亮显示所有列结束后的行尾。事实上,它高亮显示默认高亮显示的行的完全相反的部分