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