2013-02-14 23 views
6

Windows 7でVisual Studio 2012を使用しています。グリッドの選択行の次のスタイルが背景色と前景色で機能しないが、 BorderBrushやBorderThicknessなどの他のプロパティについては?グリッド上にマウスを置いている間にそれらが変化するのを見ることができます。選択した行のWPF DataGrid RowStyleが背景色と前景色を変更しない

<Style x:Key="gridRowStyle" TargetType="{x:Type DataGridRow}"> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Background" Value="PeachPuff"/> 
      <Setter Property="Foreground" Value="BlueViolet"/> 
     </Trigger> 
     <Trigger Property="IsSelected" Value="True"> 
      <Setter Property="Background" Value="PeachPuff"/> 
      <Setter Property="Foreground" Value="BlueViolet"/> 
      <Setter Property="BorderBrush" Value="BlueViolet" /> 
      <Setter Property="BorderThickness" Value="2" /> 

     </Trigger> 
    </Style.Triggers> 
</Style> 

グリッドでの使用方法は次のとおりです。私は、私は次のように代わりにrowstyleのグリッドセルのスタイルを使用している場合、私はすでに問題の解決策を持っているとして、「なぜ」を知っているのではなく、問題を解決するために強調しています

<DataGrid RowStyle="{StaticResource gridRowStyle}"> 

<Style x:Key="gridCellStyle" TargetType="{x:Type DataGridCell}"> 
    <Style.Triggers> 
     <Trigger Property="IsSelected" Value="True"> 
      <Setter Property="Background" Value="PeachPuff"/> 
      <Setter Property="Foreground" Value="BlueViolet"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+2

GridCellのコンテンツがGridRowにオーバーレイしている可能性がありますか?スヌープでコントロールを見てみましたか? – Dutts

+0

投稿した内容を使って簡単なテストを実行しましたが、うまく動作します。 DataGridとRow定義の詳細を教えてください。 –

+0

私はWPFの初心者です。以前はスヌープを使用していませんでした。何が起きているのか見てみましょう。おかげで....ここでも – user2071895

答えて

0

次のデフォルトスタイルのトリガを持つDataGridCellの既定のスタイル。

<Trigger Property="IsSelected" Value="True"> 
    <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/> 
    <Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
</Trigger> 

あなたがDataGridRowのためのトリガーを書かれたのであれば、それは唯一のビジュアルツリーにDataGridCellの前に置かれた要素に適用されます。

選択中に背景&フォアグラウンドを変更するには、トリガをDataGridCellスタイルで記述するか、スタイルからデフォルトのトリガを削除する必要があります。

0

データグリッド内の行レベルでこの属性を削除するだけで、トリガされたプロパティより優先されます。

nezac

関連する問題