如何设置CheckBox样式以删除边框

时间:2015-12-14 17:25:29

标签: wpf xaml

我的一个窗口中有一个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:

enter image description here

2 个答案:

答案 0 :(得分:1)

您只需设置CheckBox属性即可从BorderThickness删除边框。

<CheckBox Content="Test" BorderThickness="0" />

如果要编辑控件模板,最简单的方法是在Blend中打开解决方案,右键单击控件并编辑模板。

Edit template

向下钻取控制树,您将找到要隐藏的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"