WPF DataGrid 样式设置


 隔行换色,鼠标单击,悬浮样式都有,其具体效果如图 1 所示。 

wpf_datagrid_style_demo

图 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 样式分享


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM