Подтвердить что ты не робот

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

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

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

Ответ 1

Я нашел уродливое решение:

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

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

Ответ 2

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

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);
    }
}

Ответ 3

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

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