2009-08-15 45 views
19

Tôi có một ứng dụng Windows WPF. Tôi cần phải thay đổi màu nền của thanh tiêu đề. Làm thế nào tôi có thể làm điều đó?Thay đổi màu nền thanh tiêu đề WPF

+0

Related: http://stackoverflow.com/questions/9978444/how-can-i-style-the-border-and-title-bar-of-a-window-in-wpf. – DuckMaestro

Trả lời

10

Trong WPF thanh tiêu đề là một phần của khu vực không phải khách hàng, không thể sửa đổi thông qua lớp cửa sổ WPF. Bạn cần thao tác xử lý Win32 (nếu tôi nhớ chính xác).
Bài viết này có thể hữu ích cho bạn: Custom Window Chrome in WPF.

7

Bạn cũng có thể tạo ra một cửa sổ không biên giới, và làm cho biên giới và danh hiệu bar mình

+5

Nhưng sau đó bạn phải tự xây dựng tất cả các chức năng của thanh tác vụ (như di chuyển, phóng to/khôi phục kích thước khi nhấp đúp, đóng đúp vào biểu tượng, ...). –

+0

vâng ... nhưng không có vấn đề gì lớn, ví dụ phương pháp DragMove giúp dễ dàng di chuyển, và phần còn lại là hòa tan bánh;) –

+4

tôi biết ... nhưng việc xây dựng một thanh tiêu đề của riêng tôi giống như một mẹo bẩn đối với tôi (Ngoài việc tạo ra cùng một cái nhìn & cảm thấy là một nhiệm vụ khá khó khăn) –

14

Dưới đây là một ví dụ về cách đạt được điều này:

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

Xử lý Bấm Sự kiện trong mã -phía sau.

Đối MouseDown -

App.Current.MainWindow.DragMove(); 

Đối Minimize Button -

App.Current.MainWindow.WindowState = WindowState.Minimized; 

Đối với DoubleClick và 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; 
     } 

Tôi hy vọng điều này sẽ giúp.

-Sushant

+0

ApplicationCommands.Close không làm việc cho tôi. Tôi đã sử dụng Application.Current.MainWindow.Close(); trong một lệnh. Ngoài ra không có DoubleClick for Grid, tôi đã sử dụng MouseLeftButtonDown và sử dụng tính năng này. if (e.ClickCount == 2) { Phóng to(); } else { Application.Current.MainWindow.DragMove(); } – Tempeck

1

Kiểm tra các mẫu sau WPF customizing the appearance of a window in XAML

mẫu này cho thấy làm thế nào để hoàn toàn tùy chỉnh phong cách/sự xuất hiện của một cửa sổ, bao gồm các lĩnh vực phi khách hàng: thanh tiêu đề, biên giới, max, min và nút đóng trong khi vẫn cung cấp tất cả các chức năng dự kiến.

Các vấn đề liên quan