c#wpf SystemColors没有';工作不正常

本文关键字:工作 不正常 SystemColors 没有 c#wpf | 更新日期: 2023-09-27 18:24:41

我试图用系统颜色给我的窗口上色,但当我这样做时:

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

我得到一个8位数的六进制数。我的程序只接受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",它也不会被接受为无效值。但随后文本显示"MenuBarColorKey"不是有效值……"

我该如何更正?

感谢您的帮助

Michael

编辑:@尴尬的编码

很抱歉,我已经读了几年书了,我是斯塔科弗洛写作的新手,所以我不能发表评论或投票。

你是对的。用刷子就可以了。非常感谢!

但我提到了公用事业的名字Zack Peterson如所示

"wpf-如何使用正确的Windows系统颜色?"

在那里我没有找到"Brush"的扩展名。这个实用程序适用于我。

c#wpf SystemColors没有';工作不正常

这里有两个问题。首先,您希望将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

根据MSDN页面,没有MenuBarColor,有MenuBarBrush