更改未聚焦的选定数据网格行的颜色

时间:2012-12-05 16:41:35

标签: c# wpf xaml

我在数据网格行上实现了一个上下文菜单。右键单击一行时,会在打开上下文菜单之前将其短暂突出显示。据我了解,这是因为数据网格正在失去焦点。

我正在尝试使用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>

系统颜色的完整列表供参考:http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-38-64-SystemColors+Reference/6266.swatch_5F00_Amalgam.png

1 个答案:

答案 0 :(得分:2)

您唯一的选择是从here复制样式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风格的适用区域。

相关问题