Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to bind Window background to a theme's Window background color?

How can I bind the default Window background color of the theme to a Window background?

I've tried the following:

<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}"
    >

But the background color renders as black and that does not seem right when using the Luna theme. Using the Luna theme I would expect the beige/brownish color often found in Windows XP.

UPDATE: After reading your answers, playing with StyleSnooper and thinking some more about this I've come to the following conclusion:

The Window will use SystemColors.WindowBrush as its background color by default. This color is white in most themes i've tried and that is probably OK. I believe white is also the Window background color in WinForms. However, the default Form background color in WinForms is not Window background but Control. So, if I want that color I have use SystemColors.ControlBrush as pointed out by Lucas.

At one point I was trying to achieve the brownish/beige Control color of WinForms on Windows XP. This is probably not possible on Windows Vista since Control color on Vista is kind of gray. Running a WinForms application on Windows Vista will not render it as beige/brownish, but gray. In this case I guess we have to apply our own custom styles to achieve the "original" Windows XP look on Vista.

Thanks everyone for helping me sort this out!

like image 770
Magnus Lindhe Avatar asked Oct 03 '09 13:10

Magnus Lindhe


People also ask

How do you change Windows background color?

Select Start > Settings > Personalization > Colors, and then choose your own color, or let Windows pull an accent color from your background.

How do I change the color of my Windows app?

Select Start > Settings . Select Personalization > Colors. Under Choose your color, select Light. To manually select an accent color, choose one under Recent colors or Windows colors, or select Custom color for an even more detailed option.

How do I change my background from black to white in Windows 10?

To enable dark mode, navigate to Settings > Personalization > Colors, then open the drop-down menu for "Choose your color" and pick Dark. Dark (and Light) mode change the look of the Windows Start menu and built-in apps.


1 Answers

Does applying a theme actually override the system brushes as I would expect? If so, you should be able to do this:

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

Edit

As per Manga's comment, you'll probably want to use SystemColors.ControlBrush to achieve the desired effect, because WindowBrush on most systems is white. ControlBrush is the "off-white" colour you're seeing on Windows XP.

like image 87
Matt Hamilton Avatar answered Sep 19 '22 13:09

Matt Hamilton