WPF DataGrid 样式设置
隔行换色,鼠标单击,悬浮样式都有,其具体效果如图 1 所示。
图 1 WPF DataGrid 样式设置效果图
其中:
界面设计代码下所示
1
2
3
4
5
6
7
8
9
10
11
12
|
< 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 > |
如果是想把整个所开发的应用程序都更改为这个样式,则在App.xaml文档里面添加相应的样式代码,如果只是当前界面,则在当前界面添加相应的样式代码,样式具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
< 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 > |
转载请注明:学者@李双琳 » 转载:WPF DataGrid 样式分享
以上只是个人想法和实践经验所得,如果有文字错误和语法错误,请加以指点!
QQ:247039968
emil:wujc@younger.com
无论是美女的歌声,还是鬣狗的狂吠,无论是鳄鱼的眼泪,还是恶狼的嚎叫,都不会使我动摇