WPF覆盖了datagrid如何设置DatagridCell Selected样式

时间:2013-07-14 14:13:53

标签: wpf wpfdatagrid

我已覆盖DataGrid。下面是我的代码和XAML。如何在选择单元格时设置样式以更改DataGridCell背景颜色?

<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);
     }
 }

1 个答案:

答案 0 :(得分:0)

您必须为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>

并设置

SelectionUnit="Cell" for your DataGrid.

希望它有所帮助。