2014-09-26 69 views
0

我想我的颜色与窗口systemColors中,但是当我这样做是这样的:C#WPF systemColors中不能正常工作

<Menu 
    Width="Auto" 
    Height="20" 
    Background="{DynamicResource {x:Static SystemColors.MenuBarColor}}"/> 

我得到一个8位hexnumber。我的程序只接受3或6个颜色的数字。执行程序总是给人一个错误信息

System.Windows.Markup.XamlParseException: Zeilennummer "11" und Zeilenposition "4" 
von "Beim Festlegen der Eigenschaft" System.Windows.Controls.Panel.Background 
"wurde eine Ausnahme ausgelöst.". ---> System.ArgumentException: "#FFF0F0F0" ist 
kein gültiger Wert für die Eigenschaft "Background". 

,如果我使用“MenuBarColorKey”,而不是这也不会被接受为vaild值。但随后文本显示“”MenuBarColorKey“不是有效值......”

我该如何纠正这个问题?

感谢您的帮助

迈克尔

编辑: @AwkwardCoder

对不起,已经读了几年,我是新来的计算器写作,所以我无法评论或投票。

你说得对。用刷子工作。非常感谢你!

但我提到的名字从 扎克·彼得森的效用如图

“WPF - ?我如何使用正确的Windows系统颜色”

那里,我没有找到扩展名“刷”。这个工具适用于我。

+1

你试过'SystemColors.MenuBarBrushKey'呢? – 2014-09-26 09:42:22

+0

在WPF中,颜色的8位十六进制数字与程序使用的6位数字相同,但是与颜色的Alpha通道(不透明度)相关的2位额外数字(在开始处):'#AARRGGBB'。 – Sheridan 2014-09-26 10:33:24

回答

2

这里有2个问题。首先,您希望使用Color作为Brush属性,然后尝试使用Color作为资源关键字。

如果你想使用它,你需要使用SystemColors.MenuBarBrushKey

Background="{DynamicResource {x:Static SystemColors.MenuBarBrushKey}}" 

的资源,或者你可以直接使用它,那么你应该使用SystemColors.MenuBarBrush

Background="{x:Static SystemColors.MenuBarBrush}" 

你会发现,SystemColors为您提供每种颜色的4个静态属性

  • XxxxColor给你Color结构
  • XxxxColorKey给你ResourceKeyColor结构
  • XxxxBrush给你SolidColorBrush
  • XxxxBrushKey给你ResourceKeySolidColorBrush