2009-08-15 3 views

Répondre

10

Dans WPF, la barre de titre fait partie de la zone non-client, qui ne peut pas être modifiée via la classe de fenêtre WPF. Vous devez manipuler les poignées Win32 (si je me souviens bien). Cet article peut être utile pour vous: Custom Window Chrome in WPF.

7

Vous pouvez également créer une fenêtre sans bordure, et rendre les frontières et le titre vous bar

+5

Mais alors vous devez vous-même construire toutes les fonctionnalités de la barre des tâches (comme déplacer, agrandir/restaurer la taille en double-cliquant, fermer en double-cliquant sur l'icône, ...). –

+0

oui ... mais ce n'est pas un gros problème, par exemple la méthode DragMove le rend facile à déplacer, et le reste est la paix du gâteau;) –

+4

je sais ... mais construire une propre barre de titre me semble un sale tour (en plus de créer le même Look & Feel est une tâche assez difficile imho) –

14

Voici un exemple sur la façon d'y parvenir:

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

poignée Cliquez sur Événements dans le code -derrière.

Pour MouseDown -

App.Current.MainWindow.DragMove(); 

Pour minimiser Bouton -

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

Pour DoubleClick et 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; 
     } 

J'espère que cela aide.

-Sushant

+0

ApplicationCommands.Close n'a pas fonctionné pour moi. J'ai utilisé Application.Current.MainWindow.Close(); dans une commande. Il n'y a pas non plus de DoubleClick for Grid, j'ai utilisé MouseLeftButtonDown et l'ai utilisé. if (e.ClickCount == 2) { Agrandir(); } sinon { Application.Current.MainWindow.DragMove(); } – Tempeck

1

Vérifier l'exemple suivant WPF customizing the appearance of a window in XAML

Cet exemple montre comment personnaliser entièrement le style/l'apparence d'une fenêtre, y compris les zones non-client: barre de titre, les frontières, max, min et fermer les boutons tout en fournissant toutes les fonctionnalités attendues.