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

ここから 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 スタイルの該当する部分もコピーしました。

于 2012-12-05T17:38:56.410 に答える