web-dev-qa-db-fra.com

Modification de la couleur d'arrière-plan de la barre de titre WPF

J'ai une application Windows WPF. Je dois changer la couleur d'arrière-plan de la barre de titre. Comment puis je faire ça?

35
Emad Gabriel

Dans WPF, la barre de titre fait partie de la zone non cliente, 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 pourrait vous être utile: Fenêtre personnalisée Chrome dans WPF .

20
Marcel B

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>

Gérez les événements Click dans le code-behind.

Pour MouseDown -

App.Current.MainWindow.DragMove();

Pour le bouton Réduire -

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 ça aide.

23
Sushant Khurana

Vous pouvez également créer une fenêtre sans bordure et créer vous-même les bordures et la barre de titre

12
Thomas Levesque

Vérifiez l'exemple suivant WPF personnalisation de l'apparence d'une fenêtre en XAML

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

6
Abou-Emish