J'ai une application Windows WPF. J'ai besoin de changer la couleur de fond de la barre de titre. Comment puis je faire ça?Modification de la couleur d'arrière-plan de la barre de titre WPF
Répondre
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.
Vous pouvez également créer une fenêtre sans bordure, et rendre les frontières et le titre vous bar
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, ...). –
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;) –
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) –
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
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
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.
Connexe: http://stackoverflow.com/questions/9978444/how-can-i-style-the-border-and-title-bar-of-a-window-in-wpf. – DuckMaestro