我有一个WPF Windows应用程序。我需要更改标题栏的背景颜色。我怎样才能做到这一点?更改WPF标题栏背景颜色
回答
在WPF中,标题栏是非客户区的一部分,无法通过WPF窗口类进行修改。你需要操纵Win32手柄(如果我没有记错的话)。
本文可能对您有所帮助:Custom Window Chrome in WPF。
你也可以创建一个无国界的窗口,使边框和标题栏自己
但是,您必须自己构建所有任务栏功能(例如双击移动,最大化/恢复大小,双击图标关闭,...)。 – 2009-08-16 11:59:49
是的......但这没什么大不了的,例如DragMove方法可以很容易地移动,剩下的就是蛋糕的安宁;) – 2009-08-16 13:21:43
我知道......但是构建一个自己的标题栏对我来说就像是一个肮脏的诡计。(除了创建相同的外观和感觉是一个非常艰巨的任务imho) – 2009-08-16 14:41:21
下面是关于如何实现这样一个例子:
<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>
手柄单击事件中的代码-背后。
有关的MouseDown -
App.Current.MainWindow.DragMove();
对于最小化按钮 -
App.Current.MainWindow.WindowState = WindowState.Minimized;
对于DoubleClick和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;
}
我希望这有助于。
-Sushant
ApplicationCommands.Close不适合我。我使用Application.Current.MainWindow.Close();在一个命令。也没有DoubleClick for Grid,我使用了MouseLeftButtonDown并使用它。 if(e.ClickCount == 2) { Maximize(); } else { Application.Current.MainWindow.DragMove(); } – Tempeck 2017-10-13 06:24:22
检查下面的示例WPF customizing the appearance of a window in XAML
此示例演示如何完全自定义样式/外观的窗口,包括非客户端领域:标题栏,边框,最大值,最小值和关闭按钮,同时仍然提供所有预期的功能。
- 1. 更改标签栏的背景颜色
- 2. 更改标题颜色和背景
- 3. 更改UITableView标题的背景颜色
- 4. 更改导航标题背景颜色
- 5. 更改工具栏背景颜色和标题
- 6. 更改操作栏背景和标题颜色
- 7. 更改MFMailComposeViewController的标题栏,背景和文本的颜色
- 8. Android操作栏标题 - 更改背景颜色
- 9. 更改WPF DatePicker年/月标题区域背景颜色
- 10. 更改WPF DataGrid左上角标题的背景颜色
- 11. 更改WPF扩展器中标题的背景颜色
- 12. 更改颜色标题栏
- 13. 更改导航栏背景颜色?
- 14. 更改操作栏的背景颜色
- 15. 标题菜单栏背景颜色
- 16. WPF:如何更改TransitioningContentControl背景颜色?
- 17. 在WPF中更改Webbrowser背景颜色
- 18. WPF双击更改行背景颜色
- 19. 更改WPF ItemTemplate的背景颜色
- 20. 更改背景颜色中的ScrollViewer WPF
- 21. 更改工具栏的背景色编程不改变工具栏标题背景颜色
- 22. 如何更改DialogFragment标题背景颜色和底线颜色
- 23. 更改行上的背景颜色,但不更改行标题
- 24. 更改iframe问题的背景颜色
- 25. 更改EditText问题的背景颜色
- 26. 更改Raphael“标签”的背景颜色
- 27. 更改背景颜色标签面板
- 28. 更改ActionBar标签背景颜色
- 29. JustGage - 更改标尺的背景颜色
- 30. 自定义选项卡栏背景颜色。如何更改标签栏背景的颜色?
相关:http://stackoverflow.com/questions/9978444/how-can-i-style-the-border-and-title-bar-of-a-window-in-wpf。 – DuckMaestro 2015-01-20 00:55:25