Pertanyaan Bagaimana saya bisa mengatur warna kontrol WPF ke warna sistem secara terprogram, sehingga pembaruan pada perubahan skema warna?


Bagaimana saya bisa melakukan ini di belakang kode WPF?

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

32
2018-03-09 23:53


asal


Jawaban:


Saya baru saja menemukan solusi yang buruk:

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

Saya berharap seseorang akan memposting yang lebih baik (saya ingin melihat sesuatu seperti grid1.Background = BackgroundBrush, karena sintaks dari SetResourceReference adalah langkah mundur dari Formulir Windows).


13
2018-03-10 00:12



Metode penyuluhan dapat membantu:

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

6
2018-03-10 07:29



Ini harus ditambahkan ke versi WPF yang lebih baru karena ini awalnya dikirim karena kode asli Anda berfungsi dengan baik untuk saya (saya menggunakan WPF 4.5)

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


4
2017-09-28 14:08



.NET Framework Didukung pada: 3.0

https://msdn.microsoft.com/en-us/library/system.windows.systemcolors.highlightbrush(v=vs.85).aspx https://msdn.microsoft.com/en_us/library/system.windows.systemcolors.highlightbrushkey(v=vs.85).aspx

this.background=SystemColors.HighlightBrush;

2
2018-03-18 06:03