我的一个窗口中有一个CheckBox
控件,可以显示某些内容是真还是假 - 我不希望我的用户与之交互。
默认情况下,设置IsEnabled="False"
灰色框,这很好。但是,如果我保持一个坚实的复选标记并移除边界,我认为它会更整洁,更明显。
起初我设置了BorderThickness="0"
,这似乎什么都不做。所以我转而使用了样式,并把它放在我的资源字典中:
<Style x:Key="BorderlessCheckBox" TargetType="{x:Type CheckBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CheckBox">
<BulletDecorator Background="Transparent">
<BulletDecorator.Bullet>
<Border Background="#FFAEB3B9" BorderThickness="0" />
</BulletDecorator.Bullet>
</BulletDecorator>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这完全删除了文本框 - 最好我可以告诉我无意中覆盖了整个样式,因为我没有指定支票作为我的风格的一部分,所以不会出现任何检查。 / p>
是否有直接从文本框中删除边框的方法,而无需从头开始重新设置整个控件的样式?
编辑:我确实尝试过BorderThickness:答案 0 :(得分:1)
您只需设置CheckBox
属性即可从BorderThickness
删除边框。
<CheckBox Content="Test" BorderThickness="0" />
如果要编辑控件模板,最简单的方法是在Blend中打开解决方案,右键单击控件并编辑模板。
向下钻取控制树,您将找到要隐藏的checkBoxBorder控件。您在此处看到BorderThickness
来自TemplateBinding
(因此来自CheckBox
本身的属性):
<Border x:Name="checkBoxBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
<Grid x:Name="markGrid">
<Path x:Name="optionMark" Data="F1 M 9.97498,1.22334L 4.6983,9.09834L 4.52164,9.09834L 0,5.19331L 1.27664,3.52165L 4.255,6.08833L 8.33331,1.52588e-005L 9.97498,1.22334 Z " Fill="{StaticResource OptionMark.Static.Glyph}" Margin="1" Opacity="0" Stretch="None"/>
<Rectangle x:Name="indeterminateMark" Fill="{StaticResource OptionMark.Static.Glyph}" Margin="2" Opacity="0"/>
</Grid>
</Border>
答案 1 :(得分:1)
由于Bart的上述回应,我本人也碰到了这一点,并发现了以下内容。我编辑了MahApps Metro Checkbox模板的副本,下面是使用的变量。执行以下操作将删除复选框周围的矩形。
风格
<Setter Property="mah:CheckBoxHelper.CheckStrokeThickness" Value="0" />
或直接在复选框xaml
mah:CheckBoxHelper.CheckStrokeThickness="0"