WPF Tips:无边框的CheckBox

11 篇文章 0 订阅

style定义如下:

<Style x:Key="NoBorderCheckBoxStyle" TargetType="{x:Type CheckBox}">
	<Setter Property="SnapsToDevicePixels" Value="true"/>
	<Setter Property="Template">
		<Setter.Value>
			<ControlTemplate TargetType="{x:Type CheckBox}">
				<Border>
					<Grid>
						<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" />
						<Border>
							<Border.Background>
								<VisualBrush Opacity="1.0" Stretch="None">
									<VisualBrush.Visual>
										<Path Name="path" Opacity="0.1" 
											  Data="M 0 5 L 3 10 10 0" 
											  StrokeThickness="1.5" />
									</VisualBrush.Visual>
								</VisualBrush>
							</Border.Background>
						</Border>
					</Grid>
				</Border>
				<ControlTemplate.Triggers>
					<Trigger Property="IsChecked" Value="True">
						<Setter TargetName="path" Property="Opacity" Value="1.0" />
						<Setter TargetName="path" Property="Stroke" Value="#FF70A16F" />
						<Setter TargetName="path" Property="StrokeThickness" Value="2.5" />
					</Trigger>
					<Trigger Property="IsChecked" Value="False">
						<Setter TargetName="path" Property="StrokeThickness" Value="0" />
					</Trigger>
				</ControlTemplate.Triggers>

			</ControlTemplate>
		</Setter.Value>
	</Setter>
</Style>

然后,如果给一个CheckBox应用此风格定义:

<CheckBox Style="{StaticResource NoBorderCheckBoxStyle}"
		  IsChecked="True"
		  Width="16" Height="16" />

运行效果如下图所示:



已知的BUG:

  1. 应用此风格后,不能再给CheckBox设置Content属性,否则Content和“对勾”会重叠在一起。
  2. 在没有应用此风格时,如果不给CheckBox设置Width和Height属性,它会取默认大小。但应用此风格后必须显示地设置Width和Height属性。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值