更改 WPF 复选框大小

24

我想在WPF中制作一个更大的复选框。

我发现我需要做一个控件模板,其中一个示例可以在这里找到: http://msdn.microsoft.com/en-us/library/ms752319.aspx

如果我使用那个代码,复选框的外观就不像默认的样子。 我只想改变边框宽度和高度属性。

我需要一个与默认外观完全相同的控件模板,然后我将仅更改宽度和高度。 有人知道在哪里可以找到吗? 或者有更好的方法吗?

5个回答

70

这个怎么样?

<CheckBox>
    <CheckBox.LayoutTransform>
        <ScaleTransform ScaleX="2" ScaleY="2" />
    </CheckBox.LayoutTransform>
</CheckBox>

如果整数值不是您想要的精确比例,您可以使用双精度浮点型来设置ScaleX和ScaleY。


5
优雅的解决方案。我将其应用为全局样式。对于选择此路线的人,请注意它还可以缩放内容(与复选框或其他元素相邻的文本)。 - Steven Magana-Zook
这太简单了! - jaymeht
2
如果您不希望字体大小也加倍,可以将文本放置在具有复选框的StackPanel中的单独TextBlock中。目前的问题是,您可以控制字体大小,但框的大小不会改变。我认为默认情况下它确实应该按比例缩放。默认情况下会出现奇怪的不匹配。 - James_UK_DEV


4
我找到的最好的解决方案是将其包装在ViewBox中:
<Viewbox Height="46" HorizontalAlignment="Left" >
    <CheckBox Content="Some Content"/>
</Viewbox>

3

默认的ControlTemplates可以在MSDN上找到(请查看Default WPF Themes链接)。

确保在您的xaml文件中添加相应的主题命名空间以引用必要的主题控件

<theme:BulletChrome Background="{TemplateBinding Background}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    RenderMouseOver="{TemplateBinding IsMouseOver}"
                    RenderPressed="{TemplateBinding IsPressed}"
                    IsChecked="{TemplateBinding IsChecked}"/>

我不确定你是否可以通用地指定它,你可能需要添加引用。
问题在于您无法真正指定边框大小,因为控件将其封装起来。

0

您可以使用复选框的可视化树,在运行时通过明确设置宽度和高度来更改所需的元素。使用Peter Blois的Snoop或一些等效工具查看是否有可以通过FindName访问的命名元素;如果没有,您将不得不猜测(例如,某些样式可能具有两个边框元素,您必须选择一个),并显式地遍历可视化树。

请记住,如果找不到要查找的元素,则您的代码不应执行任何操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接