I have a WPF Windows application. I need to change the background color of the title bar. How can I do that?
- Related: stackoverflow.com/questions/9978444/….DuckMaestro– DuckMaestro2015-01-20 00:55:25 +00:00Commented Jan 20, 2015 at 0:55
- 1Possible duplicate of How can I style the border and title bar of a window in WPF?StayOnTarget– StayOnTarget2019-07-24 19:16:04 +00:00Commented Jul 24, 2019 at 19:16
4 Answers
In WPF the titlebar is part of the non-client area, which can't be modified through the WPF window class. You need to manipulate the Win32 handles (if I remember correctly).
This article could be helpful for you: Custom Window Chrome
3 Comments
Here's an example on how to achieve this:
<DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" LastChildFill="True"> <Grid DockPanel.Dock="Right" HorizontalAlignment="Right"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center"> <Button x:Name="MinimizeButton" KeyboardNavigation.IsTabStop="False" Click="MinimizeWindow" Style="{StaticResource MinimizeButton}" Template="{StaticResource MinimizeButtonControlTemplate}" /> <Button x:Name="MaximizeButton" KeyboardNavigation.IsTabStop="False" Click="MaximizeClick" Style="{DynamicResource MaximizeButton}" Template="{DynamicResource MaximizeButtonControlTemplate}" /> <Button x:Name="CloseButton" KeyboardNavigation.IsTabStop="False" Command="{Binding ApplicationCommands.Close}" Style="{DynamicResource CloseButton}" Template="{DynamicResource CloseButtonControlTemplate}"/> </StackPanel> </Grid> </DockPanel> Handle Click Events in the code-behind.
For MouseDown -
App.Current.MainWindow.DragMove(); For Minimize Button -
App.Current.MainWindow.WindowState = WindowState.Minimized; For DoubleClick and MaximizeClick
if (App.Current.MainWindow.WindowState == WindowState.Maximized) { App.Current.MainWindow.WindowState = WindowState.Normal; } else if (App.Current.MainWindow.WindowState == WindowState.Normal) { App.Current.MainWindow.WindowState = WindowState.Maximized; } 4 Comments
Style & Template. Where are these defined/declared?You can also create a borderless window, and make the borders and title bar yourself
4 Comments
This project was very helpful to me in changing the background color using Window Chrome. If you want to to a ton of other custom things with the title back then maybe a borderless window is the way to go. But for just changing the color this was simple and worked great! https://www.codeproject.com/Articles/5255192/Use-WindowChrome-to-Customize-the-Title-Bar-in-WPF