1

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

我正在尝试使用 更改未聚焦但已选择的颜色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

4

1 回答 1

2

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

于 2012-12-05T17:38:56.410 回答