2009-08-15 339 views
19

我有一個WPF Windows應用程序。我需要更改標題欄的背景顏色。我怎樣才能做到這一點?更改WPF標題欄背景顏色

+0

相關: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

回答

10

在WPF中,標題欄是非客戶區的一部分,無法通過WPF窗口類進行修改。你需要操縱Win32手柄(如果我沒有記錯的話)。
本文可能對您有所幫助:Custom Window Chrome in WPF

7

你也可以創建一個無國界的窗口,使邊框和標題欄自己

+5

但是,您必須自己構建所有任務欄功能(例如雙擊移動,最大化/恢復大小,雙擊圖標關閉,...)。 – 2009-08-16 11:59:49

+0

是的......但這沒什麼大不了的,例如DragMove方法可以很容易地移動,剩下的就是蛋糕的安寧;) – 2009-08-16 13:21:43

+4

我知道......但是構建一個自己的標題欄對我來說就像是一個骯髒的詭計。(除了創建相同的外觀和感覺是一個非常艱鉅的任務imho) – 2009-08-16 14:41:21

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

+0

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

1

檢查下面的示例WPF customizing the appearance of a window in XAML

此示例演示如何完全自定義樣式/外觀的窗口,包括非客戶端領域:標題欄,邊框,最大值,最小值和關閉按鈕,同時仍然提供所有預期的功能。