2014-09-26 3 views
0

Я пытаюсь красить окна с systemcolors, но когда я делаю это так:C# МОФ 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» вместо того, чтобы это не будет восприниматься как непросроченное значение либо. Но тогда текст гласит: «MenuBarColorKey» не является допустимым значением .... '

Как это исправить?

Спасибо за вашу помощь

Майкл

редактировать: @AwkwardCoder

К сожалению, чтение уже несколько лет, я новичок в письменной форме в StackOverflow, так что я не могу комментировать или голосовать ,

Вы правы. С помощью кисти это работает. Большое спасибо!

Но я сослался на имена к полезности от Zack Peterson, как показано на

«МОФ - Как использовать правильные системные цвета для Windows»

и там я не нашел расширение «Кисть». И эта утилита работает для меня.

+1

Вы пробовали 'SystemColors.MenuBarBrushKey' вместо этого? –

+0

В WPF восьмизначное шестнадцатеричное число для цветов совпадает с шестизначным числом, которое использует ваша программа, но с двумя дополнительными цифрами (в начале), которые относятся к альфа-каналу цвета (непрозрачность): '# AARRGGBB'. – Sheridan

ответ

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 дает ResourceKey для Color структуры
  • XxxxBrush дает SolidColorBrush класс
  • XxxxBrushKey дает вам ResourceKey к SolidColorBrush класса
Смежные вопросы