Как привязать фон окна к цвету фона окна темы? - PullRequest
9 голосов
/ 03 октября 2009

Как связать цвет фона окна по умолчанию для темы с фоном окна?

Я пробовал следующее:

<Window x:Class="Shell"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Shell" 
    Height="300" 
    Width="300" 
    Background="{DynamicResource WindowBackgroundBrush}"
    >

Но цвет фона отображается черным, и это не выглядит правильным при использовании темы Luna. Используя тему Luna, я ожидаю, что бежевый / коричневатый цвет часто встречается в Windows XP.

ОБНОВЛЕНИЕ: Прочитав ваши ответы, поиграв с StyleSnooper и подумав немного об этом, я пришел к следующему выводу:

Окно будет использовать SystemColors.WindowBrush в качестве цвета фона по умолчанию. Этот цвет белый в большинстве тем, которые я пробовал, и это, вероятно, хорошо. Я считаю, что белый цвет также является фоновым цветом окна в WinForms. Однако по умолчанию цвет фона формы в WinForms - это не фон окна, а элемент управления. Итак, если я хочу этот цвет, я использую SystemColors.ControlBrush, как указано Lucas .

В какой-то момент я пытался получить коричнево-бежевый контрольный цвет WinForms в Windows XP. Это, вероятно, невозможно в Windows Vista, поскольку цвет управления в Vista немного серый. Запуск приложения WinForms в Windows Vista не отобразит его как бежевый / коричневатый, а серый. В этом случае я думаю, что мы должны применить наши собственные стили, чтобы добиться «оригинального» внешнего вида Windows XP в Vista.

Спасибо всем за помощь в этом!

Ответы [ 2 ]

4 голосов
/ 10 октября 2009

Действительно ли применение темы перекрывает системные кисти, как я ожидал? Если это так, вы должны быть в состоянии сделать это:

<Window ...
    Background="{x:Static SystemColors.WindowBrush}
    ...>

Редактировать

Согласно комментарию Манги, вы, вероятно, захотите использовать SystemColors.ControlBrush для достижения желаемого эффекта, потому что WindowBrush на большинстве систем имеет белый цвет. ControlBrush - это «не совсем белый» цвет, который вы видите в Windows XP.

1 голос
/ 03 октября 2009

Я бы подумал, что простое оставление свойства Background не установленным для вашего Window элемента позволит достичь этого. Суть темы в том, что она влияет на внешний вид визуальных элементов по умолчанию, таких как Window.

.

РЕДАКТИРОВАТЬ Вы можете посмотреть на StyleSnooper - он позволит вам просмотреть шаблон по умолчанию для элемента управления (например, Window). Вы должны быть в состоянии определить, с каким свойством оно связано для каждой темы.

...