Checkbox 模板和样式
1 <Style TargetType="{x:Type CheckBox}">
2 <Setter Property="FontFamily" Value="Microsoft YaHei" />
3 <Setter Property="FontSize" Value="12" />
4 <Setter Property="FocusVisualStyle" Value="{x:Null}" />
5 <Setter Property="Background" Value="{DynamicResource ButtonBackground}" />
6 <Setter Property="BorderBrush" Value="{DynamicResource ButtonBorder}" />
7 <Setter Property="Foreground" Value="{DynamicResource WindowText}" />
8 <Setter Property="BorderThickness" Value="1" />
9 <Setter Property="Template">
10 <Setter.Value>
11 <ControlTemplate TargetType="{x:Type CheckBox}">
12 <Grid x:Name="LayoutRoot" Margin="{TemplateBinding Padding}">
13 <Grid.ColumnDefinitions>
14 <ColumnDefinition Width="Auto" />
15 <ColumnDefinition Width="*" />
16 </Grid.ColumnDefinitions>
17 <Border x:Name="CheckBorder" Width="16" Height="16" Margin="0,1,4,0" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
18 <Grid>
19 <Path x:Name="CheckMark"
20 Width="10" Height="10"
21 Margin="2"
22 Data="F1M15,21L22,28 32.9999,14.0001 35.9999,17.0001 22,34 12.0001,24 15,21z"
23 Fill="{TemplateBinding Foreground}"
24 Stretch="Fill" Visibility="Collapsed" />
25 <Rectangle x:Name="Indeterminate" Width="8" Height="8" Margin="4" Fill="{TemplateBinding Foreground}" Visibility="Hidden" />
26 </Grid>
27 </Border>
28 <ContentPresenter Grid.Column="1"
29 Margin="{TemplateBinding Padding}"
30 HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
31 VerticalAlignment="Center"
32 Content="{TemplateBinding Content}"
33 ContentStringFormat="{TemplateBinding ContentStringFormat}"
34 ContentTemplate="{TemplateBinding ContentTemplate}"
35 Focusable="False" RecognizesAccessKey="True"
36 SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
37 </Grid>
38 <ControlTemplate.Triggers>
39 <MultiDataTrigger>
40 <MultiDataTrigger.Conditions>
41 <Condition Binding="{Binding IsThreeState, RelativeSource={RelativeSource Self}}" Value="True" />
42 <Condition Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}" Value="True" />
43 </MultiDataTrigger.Conditions>
44 <Setter Property="Foreground" Value="{DynamicResource ButtonTextDisabled}" />
45 <Setter TargetName="CheckMark" Property="Visibility" Value="Collapsed" />
46 <Setter TargetName="Indeterminate" Property="Visibility" Value="Visible" />
47 </MultiDataTrigger>
48 <Trigger Property="IsEnabled" Value="False">
49 <Setter Property="Foreground" Value="{DynamicResource ButtonTextDisabled}" />
50 </Trigger>
51 <Trigger Property="IsChecked" Value="True">
52 <Setter TargetName="CheckMark" Property="Visibility" Value="Visible" />
53 <Setter TargetName="Indeterminate" Property="Visibility" Value="Collapsed" />
54 </Trigger>
55 <Trigger Property="IsMouseOver" Value="True">
56 <Setter TargetName="CheckBorder" Property="Background" Value="{DynamicResource ButtonBackgroundHover}" />
57 <Setter TargetName="CheckBorder" Property="BorderBrush" Value="{DynamicResource ButtonBorderHover}" />
58 <Setter TargetName="CheckMark" Property="Fill" Value="{DynamicResource ButtonTextHover}" />
59 </Trigger>
60 <Trigger Property="IsPressed" Value="True">
61 <Setter TargetName="CheckBorder" Property="Background" Value="{DynamicResource ButtonBackgroundPressed}" />
62 <Setter TargetName="CheckBorder" Property="BorderBrush" Value="{DynamicResource ButtonBorderPressed}" />
63 <Setter TargetName="CheckMark" Property="Fill" Value="{DynamicResource ButtonTextPressed}" />
64 </Trigger>
65 <Trigger Property="IsFocused" Value="True">
66 <Setter TargetName="CheckBorder" Property="BorderBrush" Value="{DynamicResource Accent}" />
67 </Trigger>
68 </ControlTemplate.Triggers>
69 </ControlTemplate>
70 </Setter.Value>
71 </Setter>
72 </Style>
应用
1 <CheckBox Content="checkbox"/>
引用:
https://msdn.microsoft.com/zh-cn/library/ms752319(v=vs.110).aspx
一些疑点将会在后期补充
作者: _蔚蓝
出处:https://www.cnblogs.com/SunsetAzure/p/6170223.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本