Как программно установить цвет элемента управления WPF на системный цвет, чтобы он обновлялся при изменении цветовой схемы? - PullRequest
33 голосов
/ 10 марта 2009

Как я могу сделать это в коде позади WPF?

<Grid Background="{DynamicResource {x:Static SystemColors.DesktopBrushKey}}"/>

Ответы [ 4 ]

14 голосов
/ 10 марта 2009

Я только что нашел уродливое решение:

grid1.SetResourceReference(
    Control.BackgroundProperty,
    SystemColors.DesktopBrushKey);

Я надеюсь, что кто-то опубликует более лучший вариант (я хотел бы видеть что-то вроде grid1.Background = BackgroundBrush, потому что синтаксис SetResourceReference является шагом назад по сравнению с Windows Forms).

6 голосов
/ 28 сентября 2014

Это, должно быть, было добавлено в более позднюю версию WPF, так как это было первоначально отправлено, потому что ваш оригинальный код работает хорошо для меня (я использую WPF 4.5)

<Grid Background="{DynamicResource {x:Static SystemColors.DesktopBrushKey}}"/>

6 голосов
/ 10 марта 2009

Методы расширения могут помочь:

public static class FrameworkElementExtensions
{
    // usage xPanel.SetBackground(SystemColors.DesktopBrushKey);
    public static void SetBackground(this Panel panel, ResourceKey key)
    {
        panel.SetResourceReference(Panel.BackgroundProperty, key);
    }

    // usage xControl.SetBackground(SystemColors.DesktopBrushKey);
    public static void SetBackground(this Control control, ResourceKey key)
    {
        control.SetResourceReference(Control.BackgroundProperty, key);
    }
}
2 голосов
/ 18 марта 2015
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...