あなたが試したことは実際にうまくいくはずです。
この例を見てください:
<Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource SampleDataSource}}">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="10*"/>
</Grid.RowDefinitions>
<Rectangle Fill="#FF0090FF"/>
<DataGrid Grid.Row="1" ItemsSource="{Binding TestCollection}" Background="Purple">
<DataGrid.Resources>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="Yellow"/>
</Style>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" Value="#6F0090FF"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
</DataGrid>
</Grid>
青い長方形があります。Fill
プロパティが に設定されています#FF0090FF
。あなたが注意すべきことは、あなたが呼んでいるもの"UnSelected Background color"
は実際にBackground
はDataGridRow
.
Fill
そして今...選択したセルの背景色は、その四角形( )とまったく同じ#0090FF
です。Alpha
だいたい50%( )までしか変化しませんでし#6F0090FF
た。そして、あなたが期待するように、あなたが見るのは何か緑がかったものです.
アップデート
Background
保存したい場合DataGridCell
は、別のアプローチを選択する必要があります。あなたの中にもう1つのレイヤーを作成することをお勧めしますDataGridCell's ControlTemplate
このレイヤー...たとえば「selectedCellVisual」と呼ぶことができ、セルが選択されている場合にのみ表示されます。
だから...作成する必要があるため、前の例からControlTemplate
スタイルを変更する必要があります。DataGridCell
<Style TargetType="DataGridCell" >
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Background" Value="Red"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<Grid>
<Rectangle x:Name="selectedCellVisual" Fill="#6F0090FF" Visibility="Collapsed"/>
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="selectedCellVisual" Property="Visibility" Value="Visible"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
DataGridCell
赤Background
になり、選択すると半透明の青い四角形「selectedCellVisual」が表示されます。背景の透明な青と赤は、最終的な紫の色になります。
あなたはに注意を払う必要があります
<Setter Property="OverridesDefaultStyle" Value="True"/>
IsSelected
セルの背景を変更するプロパティのトリガーを変更していないため、そこにある必要があります。デフォルトのスタイルで定義されています。それは変化Background
し、Foreground
プロパティです。これは最初の例でわかります。前景は白に設定され、セルの周りに 1 ピクセル幅の青い線があります。