Сложность в том, что нужные вам цвета скрыты глубоко в стилях темы Menu
. Эти стили темы являются одними из самых сложных среди тех, которые поставляются с WPF. Они состоят из 10-20 стилей и шаблонов.
В общем, я рекомендую создавать стили, аналогичные тем, которые приведены в ответе itowlson, поскольку он позволяет изящно адаптироваться к текущей теме Windows, заменяя только те свойства и шаблоны, которые вы хотите изменить, и оставляя все остальное таким же.
В вашем случае переопределение стилей темы по частям путем добавления отдельных тегов, вероятно, будет бесполезным упражнением. К счастью вам не нужно это делать .
Очевидно, что вы на самом деле пытаетесь создать свою собственную пользовательскую тему с точки зрения взаимодействия с пользователем, так почему бы на самом деле не создать свою собственную тему в коде? Вы можете сделать это легко, скопировав тему из Aero или Luna (как вам нравится) и изменив все, что вы хотите, чтобы получить именно тот вид, который вы хотите.
Это очень просто сделать с помощью Expression Blend. Просто:
- Создайте пустое окно и добавьте в него меню.
- Щелкните правой кнопкой мыши Меню и выберите
Edit Control Parts (Template) > Edit a Copy...
.
- В диалоговом окне выберите
Apply to All
и нажмите New
рядом с Resource dictionary
- Введите новое имя файла ResourceDictionary, например «MyMenuTheme.xaml»
- В вашем App.xaml используйте MergedDictionaries для включения MyMenuTheme.xaml в ресурсы вашего приложения
Теперь вы можете вносить любые изменения, которые вы хотите внести в MyMenuTheme.xaml, чтобы повлиять на внешний вид всех меню в приложении. Этот файл будет длиной в несколько сотен строк, но обычно легко найти правильные настройки для изменения. В вашем случае это будут различные настройки по умолчанию для настроек фона.
Обратите внимание, что если у вас нет Expression Blend, вы можете также начать стили стилей с использованием отражателя и BAMLViewer, но это намного сложнее, так как вам придется вручную выбирать стили и другие необходимые вам ресурсы.