代码之家  ›  专栏  ›  技术社区  ›  Emad Gabriel

更改WPF标题栏背景色

  •  30
  • Emad Gabriel  · 技术社区  · 15 年前

    我有一个WPF Windows应用程序。我需要更改标题栏的背景色。我该怎么做?

    4 回复  |  直到 7 年前
        1
  •  16
  •   bluish dmajkic    11 年前

    在WPF中,标题栏是非客户机区域的一部分,不能通过WPF窗口类进行修改。您需要操作win32句柄(如果我记得正确的话)。
    本文可以帮助您: Custom Window Chrome in WPF .

        2
  •  20
  •   Sushant Khurana    14 年前

    下面是一个如何实现这一目标的示例:

        <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和MaximiceClick

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

    我希望这有帮助。

    -苏珊

        3
  •  11
  •   Thomas Levesque    15 年前

    您也可以创建一个无边框窗口,自己制作边框和标题栏。

        4
  •  3
  •   Abou-Emish    7 年前

    检查以下样本 WPF customizing the appearance of a window in XAML

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