I have overrides DataGrid
. Below are my code and XAML. How can I set style to change the DataGridCell
background colour when the cell is selected?
<vw:DataGridExt
Grid.Row="1"
AlternatingRowBackground="LightGray"
ItemsSource="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Value,Mode=OneWay, IsAsync=True}"
Background="White"
AutoGenerateColumns="True"
IsReadOnly="True"
CanUserResizeRows="False"
ClipboardCopyMode="IncludeHeader"
CanUserSortColumns="True"
CanUserAddRows="False"
SelectionMode="Extended"/>
public class DataGridExt : DataGrid
{
public DataGridExt()
{
this.AutoGeneratedColumns += new EventHandler(DataGrid_AutoGeneratedColumns);
}
}
You have to provide a style for your DataGridCell
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}" >
<ContentPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="BorderBrush" Value="Black" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Gray"/>
</Trigger>
</Style.Triggers>
</Style>
and set
SelectionUnit="Cell" for your DataGrid.
Hope it helps.