隔行换色,鼠标单击,悬浮样式都有,其具体效果如图 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 样式分享