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>
分类:
WPF 默认样式存档
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现