wpf DataGrid 默认样式存档,方便手头没有 vs 时查阅.

复制代码
  1         <!-- 全选按钮样式 -->
  2         <Style
  3             x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle,
  4                                          TypeInTargetAssembly={x:Type DataGrid}}"
  5             TargetType="{x:Type Button}">
  6             <Setter Property="Template">
  7                 <Setter.Value>
  8                     <ControlTemplate TargetType="{x:Type Button}">
  9                         <Grid>
 10                             <Rectangle
 11                                 x:Name="Border"
 12                                 Fill="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"
 13                                 SnapsToDevicePixels="True" />
 14                             <Polygon
 15                                 x:Name="Arrow"
 16                                 Margin="8,8,3,3"
 17                                 HorizontalAlignment="Right"
 18                                 VerticalAlignment="Bottom"
 19                                 Fill="Black"
 20                                 Opacity="0.15"
 21                                 Points="0,10 10,10 10,0"
 22                                 Stretch="Uniform" />
 23                         </Grid>
 24                         <ControlTemplate.Triggers>
 25                             <Trigger Property="IsMouseOver" Value="True">
 26                                 <Setter TargetName="Border" Property="Stroke" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" />
 27                             </Trigger>
 28                             <Trigger Property="IsPressed" Value="True">
 29                                 <Setter TargetName="Border" Property="Fill" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" />
 30                             </Trigger>
 31                             <Trigger Property="IsEnabled" Value="False">
 32                                 <Setter TargetName="Arrow" Property="Visibility" Value="Collapsed" />
 33                             </Trigger>
 34                         </ControlTemplate.Triggers>
 35                     </ControlTemplate>
 36                 </Setter.Value>
 37             </Setter>
 38         </Style>
 39 
 40         <Style
 41             x:Key="DataGridStyle1"
 42             TargetType="{x:Type DataGrid}">
 43             <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
 44             <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
 45             <Setter Property="BorderBrush" Value="#FF688CAF" />
 46             <Setter Property="BorderThickness" Value="1" />
 47             <Setter Property="RowDetailsVisibilityMode" Value="VisibleWhenSelected" />
 48             <Setter Property="ScrollViewer.CanContentScroll" Value="true" />
 49             <Setter Property="ScrollViewer.PanningMode" Value="Both" />
 50             <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
 51             <Setter Property="Template">
 52                 <Setter.Value>
 53                     <ControlTemplate TargetType="{x:Type DataGrid}">
 54                         <!-- DataGrid 的边框 -->
 55                         <Border
 56                             Padding="{TemplateBinding Padding}"
 57                             Background="{TemplateBinding Background}"
 58                             BorderBrush="{TemplateBinding BorderBrush}"
 59                             BorderThickness="{TemplateBinding BorderThickness}"
 60                             SnapsToDevicePixels="True">
 61 
 62                             <!-- 边框内部是一整个 ScrollViewer  所有的内容都在这个 ScrollViewer 中 -->
 63                             <ScrollViewer
 64                                 x:Name="DG_ScrollViewer"
 65                                 Focusable="false">
 66                                 <ScrollViewer.Template>
 67                                     <ControlTemplate TargetType="{x:Type ScrollViewer}">
 68                                         <Grid>
 69                                             <Grid.ColumnDefinitions>
 70                                                 <ColumnDefinition Width="Auto" />
 71                                                 <ColumnDefinition Width="*" />
 72                                                 <ColumnDefinition Width="Auto" />
 73                                             </Grid.ColumnDefinitions>
 74                                             <Grid.RowDefinitions>
 75                                                 <RowDefinition Height="Auto" />
 76                                                 <RowDefinition Height="*" />
 77                                                 <RowDefinition Height="Auto" />
 78                                             </Grid.RowDefinitions>
 79 
 80                                             <!-- 左上角的全选按钮 -->
 81                                             <Button
 82                                                 Width="{Binding CellsPanelHorizontalOffset,
 83                                                                 RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
 84                                                 Command="{x:Static DataGrid.SelectAllCommand}"
 85                                                 Focusable="false"
 86                                                 Style="{DynamicResource {ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle,
 87                                                                                               TypeInTargetAssembly={x:Type DataGrid}}}"
 88                                                 Visibility="{Binding HeadersVisibility,
 89                                                                      ConverterParameter={x:Static DataGridHeadersVisibility.All},
 90                                                                      Converter={x:Static DataGrid.HeadersVisibilityConverter},
 91                                                                      RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
 92 
 93                                             <!-- 顶部中间的列头区 -->
 94                                             <DataGridColumnHeadersPresenter
 95                                                 x:Name="PART_ColumnHeadersPresenter"
 96                                                 Grid.Column="1"
 97                                                 Visibility="{Binding HeadersVisibility,
 98                                                                      ConverterParameter={x:Static DataGridHeadersVisibility.Column},
 99                                                                      Converter={x:Static DataGrid.HeadersVisibilityConverter},
100                                                                      RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
101 
102 
103                                             <!-- 主内容区 -->
104                                             <ScrollContentPresenter
105                                                 x:Name="PART_ScrollContentPresenter"
106                                                 Grid.Row="1"
107                                                 Grid.ColumnSpan="2"
108                                                 CanContentScroll="{TemplateBinding CanContentScroll}" />
109 
110 
111                                             <!-- 右侧的垂直滚动条 -->
112                                             <ScrollBar
113                                                 x:Name="PART_VerticalScrollBar"
114                                                 Grid.Row="1"
115                                                 Grid.Column="2"
116                                                 Maximum="{TemplateBinding ScrollableHeight}"
117                                                 Orientation="Vertical"
118                                                 ViewportSize="{TemplateBinding ViewportHeight}"
119                                                 Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
120                                                 Value="{Binding VerticalOffset,
121                                                                 Mode=OneWay,
122                                                                 RelativeSource={RelativeSource TemplatedParent}}" />
123 
124                                             <!-- 底部的水平滚动条 -->
125                                             <Grid
126                                                 Grid.Row="2"
127                                                 Grid.Column="1">
128                                                 <Grid.ColumnDefinitions>
129                                                     <ColumnDefinition Width="{Binding NonFrozenColumnsViewportHorizontalOffset, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
130                                                     <ColumnDefinition Width="*" />
131                                                 </Grid.ColumnDefinitions>
132                                                 <ScrollBar
133                                                     x:Name="PART_HorizontalScrollBar"
134                                                     Grid.Column="1"
135                                                     Maximum="{TemplateBinding ScrollableWidth}"
136                                                     Orientation="Horizontal"
137                                                     ViewportSize="{TemplateBinding ViewportWidth}"
138                                                     Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
139                                                     Value="{Binding HorizontalOffset,
140                                                                     Mode=OneWay,
141                                                                     RelativeSource={RelativeSource TemplatedParent}}" />
142                                             </Grid>
143                                         </Grid>
144                                     </ControlTemplate>
145                                 </ScrollViewer.Template>
146                                 <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
147                             </ScrollViewer>
148                         </Border>
149                     </ControlTemplate>
150                 </Setter.Value>
151             </Setter>
152             <Style.Triggers>
153                 <MultiTrigger>
154                     <MultiTrigger.Conditions>
155                         <Condition Property="IsGrouping" Value="true" />
156                         <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false" />
157                     </MultiTrigger.Conditions>
158                     <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
159                 </MultiTrigger>
160             </Style.Triggers>
161         </Style>
复制代码

 

posted @   xiejiang  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示