WPF DataGrid 样式分享

时间:2022-06-25 09:34:51

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

先看效果:

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