在a previous question中,我试图寻找一个已经存在的解决方案来创建一个带有更大标记的CheckBox
,但是这个问题被认为是重复的,我不明白。
所以我更进一步,找到了一个基于“可触发”LinearGradient
s的中间解决方案。
这就是我目前所拥有的:
<UserControl.Resources>
<Style x:Key="CustomCheckBoxStyle"
TargetType="CheckBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CheckBox">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<CheckBox IsChecked="{TemplateBinding IsChecked}"
Content="{TemplateBinding Content}"
Grid.Column="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
</CheckBox>
<Rectangle x:Name="checkBoxRectangle"
HorizontalAlignment="Left"
Width="40"
Height="40">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="1,0" EndPoint="0,1">
<GradientStop Color="White" Offset="0.0" />
<GradientStop Color="White" Offset="0.4" />
<GradientStop Color="Black" Offset="0.4" />
<GradientStop Color="Black" Offset="0.6" />
<GradientStop Color="White" Offset="0.6" />
<GradientStop Color="White" Offset="1.0" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked"
Value="True">
<Setter TargetName="checkBoxRectangle"
Property="Fill"
Value="Green"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
...
<CheckBox Style="{StaticResource CustomCheckBoxStyle}"
Grid.Row="1" Grid.Column="0" FontSize="26" Name="Chk_Something"
Content="Geladen?"
HorizontalContentAlignment="Left"
VerticalContentAlignment="Center">
</CheckBox>
它看起来像这样:
所以,现在的想法变成:
- 我怎么才能去掉单词左边的小方块呢?
- 如何取两个
LinearGradientBrush
的并集?(我知道,通过将起点和终点从(1,0)
和(0,1)
更改为(0,0)
和(1,1)
,我得到了另一个方向的黑条,所以两者的结合将形成一个美丽的十字架) - 我如何在触发器的setter中使用它作为一个值?
当然,如果你知道一个更简单的方法来使WPF CheckBox
具有更大的标记,不要犹豫通知我:-)
1条答案
按热度按时间okxuctiv1#
下面你会找到解决方案:
我打开一个复选框样式,并与第一列绑定,其中复选框位于标签属性,从那里你可以控制宽度。