2009-08-15 8 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

답변

10

WPF에서 제목 표시 줄은 클라이언트가 아닌 영역의 일부로, WPF 창 클래스를 통해 수정할 수 없습니다. Win32 핸들을 조작해야합니다 (정확하게 기억한다면).
이 기사는 도움이 될 수 있습니다 : Custom Window Chrome in WPF. 코드에서

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

핸들을 클릭 이벤트 :

7

은 또한 다음은이를 달성하는 방법에 대한 예입니다 경계선 윈도우를 생성하고, 테두리와 제목이 자신에게

+5

그렇다면 모든 작업 표시 줄 기능을 직접 만들어야합니다 (예 : 두 번 클릭하면 크기를 이동, 최대화/복원, 아이콘을 두 번 클릭하면 닫기 ...). –

+0

예 ...하지만 큰 문제는 아닙니다. 예를 들어 DragMove 메서드를 사용하면 손쉽게 움직일 수 있으며 나머지는 케이크의 평화입니다.) –

+4

알아요.하지만 나만의 제목 표시 줄을 만드는 것은 나에게 더러운 속임수처럼 느껴집니다. (동일한 룩앤필을 만드는 것 외에는 꽤 어려운 작업 임) –

14

바 만들 수 있습니다 -뒤에. MouseDown를 들어

- 더블 및 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; 
     } 

나는이 도움이 되었으면 좋겠를 들어

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

-

App.Current.MainWindow.DragMove(); 

를 들어 버튼을 최소화합니다.

-Sushant

+0

ApplicationCommands.Close가 나에게 적합하지 않습니다. 나는 Application.Current.MainWindow.Close()를 사용했다. 명령에서. 또한 Grid 용 DoubleClick이 없으며 MouseLeftButtonDown을 사용하고 이것을 사용했습니다. if (e.ClickCount == 2) { Maximize(); } else { Application.Current.MainWindow.DragMove(); } – Tempeck

1

확인 다음 샘플 WPF customizing the appearance of a window in XAML

이 샘플은 완전히 비 클라이언트 영역을 포함한 윈도우의 스타일/외관, 사용자 정의하는 방법을 보여줍니다 제목 표시 줄, 테두리, 최대, 최소 및 닫기 버튼은 여전히 ​​모든 예상 기능을 제공합니다.

관련 문제