WPF更改标题栏背景颜色(Changing WPF title bar background col

2019-06-18 11:46发布

我有一个WPF Windows应用程序。 我需要改变标题栏的背景色。 我怎样才能做到这一点?

Answer 1:

在WPF标题栏是非客户区,这无法通过WPF窗口类进行修改的一部分。 你需要操纵的Win32句柄(如果我没记错的话)。
这篇文章可能对你有所帮助: 自定义窗口镶边的WPF 。



Answer 2:

下面是关于如何实现这样一个例子:

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

我希望这有帮助。

-Susnt



Answer 3:

您还可以创建一个无国界的窗口,使边框和标题栏自己



Answer 4:

请查看以下示例WPF自定义窗口的XAML外观

此示例显示了如何完全自定义样式/外观的窗口,包括非客户端领域:标题栏,边框,最大值,最小值和关闭按钮,同时仍然提供所有预期的功能。



文章来源: Changing WPF title bar background color
标签: wpf titlebar