原文: WPF DataGrid 样式分享

隔行换色,鼠标单击,悬浮样式都有

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

先看效果:

 WPF DataGrid 样式分享 随笔

代码:

  
   
    
   <
   DataGrid 
   AutoGenerateColumns
   ="False"
    Name
   ="dataGrid1"
    VerticalAlignment
   ="Top"
    CanUserSortColumns
   ="False"
    Width
   ="660"
    Margin
   ="5"
    IsReadOnly
   ="True"
    CanUserResizeColumns
   ="False"
    CanUserResizeRows
   ="False"
    SelectionMode
   ="Single"
    CanUserReorderColumns
   ="False"
    AlternationCount
   ="2"
    RowHeaderWidth
   ="0"
    CanUserAddRows
   ="False"
    
   >
    
   <
   DataGrid.Columns
   >
    
   <
   DataGridTextColumn 
   Header
   ="名称"
    Width
   ="150"
    Binding
   ="{Binding Name}"
   />
    
   <
   DataGridTextColumn 
   Header
   ="最新价"
    Width
   ="120"
    Binding
   ="{Binding Zxj}"
   />
    
   <
   DataGridTextColumn 
   Header
   ="涨跌"
    Width
   ="120"
    Binding
   ="{Binding Zd}"
   />
    
   <
   DataGridTextColumn 
   Header
   ="涨幅"
    Width
   ="130"
    Binding
   ="{Binding Zf}"
   />
    
   <
   DataGridTextColumn 
   Header
   ="短线强势股"
    Width
   ="140"
    Binding
   ="{Binding Dxqsg}"
   />
    
   </
   DataGrid.Columns
   >
    
   </
   DataGrid
   >
  

Style代码:

  
   
   <
   ResourceDictionary 
   xmlns
   ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
   ="http://schemas.microsoft.com/winfx/2006/xaml"
   >
    
   <
   Style 
   TargetType
   ="DataGrid"
   >
    
   <!--
   网格线颜色
   -->
    
   <
   Setter 
   Property
   ="CanUserResizeColumns"
    Value
   ="false"
   />
    
   <
   Setter 
   Property
   ="Background"
    Value
   ="#E6DBBB"
    
   />
    
   <
   Setter 
   Property
   ="BorderBrush"
    Value
   ="#d6c79b"
    
   />
    
   <
   Setter 
   Property
   ="HorizontalGridLinesBrush"
   >
    
   <
   Setter.Value
   >
    
   <
   SolidColorBrush 
   Color
   ="#d6c79b"
   />
    
   </
   Setter.Value
   >
    
   </
   Setter
   >
    
   <
   Setter 
   Property
   ="VerticalGridLinesBrush"
   >
    
   <
   Setter.Value
   >
    
   <
   SolidColorBrush 
   Color
   ="#d6c79b"
   />
    
   </
   Setter.Value
   >
    
   </
   Setter
   >
    
   </
   Style
   >
    
   <!--
   标题栏样式
   -->
    
   <!--
   <Style TargetType="DataGridColumnHeader" > <Setter Property="Width" Value="50"/> <Setter Property="Height" Value="30"/> <Setter Property="FontSize" Value="14" /> <Setter Property="Background" Value="White" /> <Setter Property="FontWeight" Value="Bold"/> </Style>
   -->
    
   <
   Style 
   TargetType
   ="DataGridColumnHeader"
   >
    
   <
   Setter 
   Property
   ="SnapsToDevicePixels"
    Value
   ="True"
    
   />
    
   <
   Setter 
   Property
   ="MinWidth"
    Value
   ="0"
    
   />
    
   <
   Setter 
   Property
   ="MinHeight"
    Value
   ="28"
    
   />
    
   <
   Setter 
   Property
   ="Foreground"
    Value
   ="#323433"
    
   />
    
   <
   Setter 
   Property
   ="FontSize"
    Value
   ="14"
    
   />
    
   <
   Setter 
   Property
   ="Cursor"
    Value
   ="Hand"
    
   />
    
   <
   Setter 
   Property
   ="Template"
   >
    
   <
   Setter.Value
   >
    
   <
   ControlTemplate 
   TargetType
   ="DataGridColumnHeader"
   >
    
   <
   Border 
   x:Name
   ="BackgroundBorder"
    BorderThickness
   ="0,1,0,1"
    BorderBrush
   ="#e6dbba"
    Width
   ="Auto"
   >
    
   <
   Grid 
   >
    
   <
   Grid.ColumnDefinitions
   >
    
   <
   ColumnDefinition 
   Width
   ="*"
    
   />
    
   </
   Grid.ColumnDefinitions
   >
    
   <
   ContentPresenter 
   Margin
   ="0,0,0,0"
    VerticalAlignment
   ="Center"
    HorizontalAlignment
   ="Center"
   />
    
   <
   Path 
   x:Name
   ="SortArrow"
    Visibility
   ="Collapsed"
    Data
   ="M0,0 L1,0 0.5,1 z"
    Stretch
   ="Fill"
    Grid.Column
   ="2"
    Width
   ="8"
    Height
   ="6"
    Fill
   ="White"
    Margin
   ="0,0,50,0"
    VerticalAlignment
   ="Center"
    RenderTransformOrigin
   ="1,1"
    
   />
    
   <
   Rectangle 
   Width
   ="1"
    Fill
   ="#d6c79b"
    HorizontalAlignment
   ="Right"
    Grid.ColumnSpan
   ="1"
    
   />
    
   <!--
   <TextBlock Background="Red"> <ContentPresenter></ContentPresenter></TextBlock>
   -->
    
   </
   Grid
   >
    
   </
   Border
   >
    
   </
   ControlTemplate
   >
    
   </
   Setter.Value
   >
    
   </
   Setter
   >
    
   <
   Setter 
   Property
   ="Height"
    Value
   ="25"
   />
    
   </
   Style
   >
    
   <!--
   行样式触发
   -->
    
   <!--
   背景色改变必须先设置cellStyle 因为cellStyle会覆盖rowStyle样式
   -->
    
   <
   Style 
   TargetType
   ="DataGridRow"
   >
    
   <
   Setter 
   Property
   ="Background"
    Value
   ="#F2F2F2"
    
   />
    
   <
   Setter 
   Property
   ="Height"
    Value
   ="25"
   />
    
   <
   Setter 
   Property
   ="Foreground"
    Value
   ="Black"
    
   />
    
   <
   Style.Triggers
   >
    
   <!--
   隔行换色
   -->
    
   <
   Trigger 
   Property
   ="AlternationIndex"
    Value
   ="0"
    
   >
    
   <
   Setter 
   Property
   ="Background"
    Value
   ="#e7e7e7"
    
   />
    
   </
   Trigger
   >
    
   <
   Trigger 
   Property
   ="AlternationIndex"
    Value
   ="1"
    
   >
    
   <
   Setter 
   Property
   ="Background"
    Value
   ="#f2f2f2"
    
   />
    
   </
   Trigger
   >
    
   <
   Trigger 
   Property
   ="IsMouseOver"
    Value
   ="True"
   >
    
   <
   Setter 
   Property
   ="Background"
    Value
   ="LightGray"
   />
    
   <!--
   <Setter Property="Foreground" Value="White"/>
   -->
    
   </
   Trigger
   >
    
   <
   Trigger 
   Property
   ="IsSelected"
    Value
   ="True"
   >
    
   <
   Setter 
   Property
   ="Foreground"
    Value
   ="Black"
   />
    
   </
   Trigger
   >
    
   </
   Style.Triggers
   >
    
   </
   Style
   >
    
   <!--
   单元格样式触发
   -->
    
   <
   Style 
   TargetType
   ="DataGridCell"
   >
    
   <
   Setter 
   Property
   ="Template"
   >
    
   <
   Setter.Value
   >
    
   <
   ControlTemplate 
   TargetType
   ="DataGridCell"
   >
    
   <
   TextBlock 
   TextAlignment
   ="Center"
    VerticalAlignment
   ="Center"
    
   >
    
   <
   ContentPresenter 
   />
    
   </
   TextBlock
   >
    
   </
   ControlTemplate
   >
    
   </
   Setter.Value
   >
    
   </
   Setter
   >
    
   <
   Style.Triggers
   >
    
   <
   Trigger 
   Property
   ="IsSelected"
    Value
   ="True"
   >
    
   <!--
   <Setter Property="Background" Value="White"/> <Setter Property="BorderThickness" Value="0"/>
   -->
    
   <
   Setter 
   Property
   ="Foreground"
    Value
   ="Black"
   />
    
   </
   Trigger
   >
    
   </
   Style.Triggers
   >
    
   </
   Style
   >
    
   </
   ResourceDictionary
   >
  

本文同步发表在 http://xiaogangblog.com

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄