【问题标题】:Check mark in a checkbox复选框中的复选标记
【发布时间】:2011-04-14 18:23:57
【问题描述】:

在我的简单 WPF 应用程序中,我使用常规 CheckBox 控件。看起来我可以控制背景和前景。 Foreground 属性控制复选框旁边的文本,但不控制复选标记。默认背景是白色的,我的前景非常接近白色,因为我有一个深色的 windows 窗体背景。

当我在我的开发 Windows 7 机器上运行应用程序时,复选标记为黑色。在 Win XP 计算机上,复选标记为绿色。但是在另一台 Win XP 机器上,复选标记是不可见的,因为它是白底白字。

我的问题是“如何控制复选框复选标记的颜色?”。

【问题讨论】:

    标签: wpf checkbox


    【解决方案1】:

    此问题发生在使用“Windows 经典”主题或使用远程桌面的 Win XP 上。 复选框的项目符号复选标记采用整个 CheckBox 的前景色。

    <CheckBox Foreground="White" Content="My Text" />
    

    我可以通过更改以下代码来解决此问题:

    <CheckBox>
       <Label Foreground="White">My Text</Label>
    </CheckBox>
    

    【讨论】:

    • 遇到了完全相同的问题。谢谢!
    【解决方案2】:

    您需要覆盖 CheckBox 的 ControlTemplate。

    Here's an example 在 MSDN 上。

    【讨论】:

    • 谢谢。它并不像我希望的那么简单,但我正在研究它。
    • 如果你有 Blend,你总是可以使用编辑模板命令(对不起,我这里没有 Blend,所以我不能告诉你确切的命令)来获取默认模板。或者,您可以使用 Snoop 之类的东西。
    【解决方案3】:

    或者,我认为您可以定义一种样式,该样式定义了一个触发器,该触发器可以根据需要更改颜色。因为很有趣,所以我会尝试一下并发布一个示例。

    编辑:没关系,CheckBox 使用 BulletChrome,它在内部进行一些渲染,并且不公开任何可用于挂钩的有趣属性。

    【讨论】:

    • 非常感谢您的调查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多