2010-09-20 141 views
11

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

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

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

回答

16

此问题发生在使用'Windows经典'主题或使用远程桌面的Win XP上。 复选框的子弹复选标记为整个CheckBox使用前景颜色的颜色。

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

我能够通过更改下面的代码来解决这个问题:

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

有完全相同的问题。谢谢! – smvlad 2011-02-25 16:32:25

3

您需要覆盖CheckBox的ControlTemplate。

Here's an example MSDN上。

+0

感谢。这并不像我希望的那么简单,但我正在研究它。 – Vadim 2010-09-20 16:01:38

+0

如果你有Blend,你总是可以使用Edit Template命令(对不起,我没有Blend在这里,所以我不能告诉你确切的命令)来获得默认模板。或者,你可以使用Snoop之类的东西。 – 2010-09-20 16:16:31

0

另外,我认为你可以定义一个样式来定义一个触发器,它根据你的需要改变颜色。由于这很有趣,我会尝试一下并稍微发布一个示例。

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

+0

非常感谢您的关注。 – Vadim 2010-09-20 16:46:55