Frage

Ich habe eine WPF -Windows -Anwendung. Ich muss die Hintergrundfarbe der Titelleiste ändern. Wie kann ich das machen?

War es hilfreich?

Lösung

In WPF ist die Titelbank Teil des Nichtklientenbereichs, der nicht über die WPF-Fensterklasse geändert werden kann. Sie müssen die Win32 -Griffe manipulieren (wenn ich mich richtig erinnere).
Dieser Artikel könnte für Sie hilfreich sein: Benutzerdefinierte Fensterchrom in WPF.

Andere Tipps

Hier ist ein Beispiel, wie man dies erreicht:

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

Behandeln Sie Klick-Ereignisse in der Code-Behind.

Für Mousedown -

App.Current.MainWindow.DragMove();

Zum Minimieren der Taste -

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

Für DoubleClick und 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;
        }

Ich hoffe das hilft.

Sie können auch ein randloses Fenster erstellen und die Grenzen und die Titelleiste selbst herstellen

Überprüfen Sie die folgende Probe WPF anpassen das Aussehen eines Fensters in XAML

Dieses Beispiel zeigt, wie Sie den Stil/Erscheinungsbild eines Fensters vollständig anpassen können, einschließlich der nicht klienten Bereiche: Titelleiste, Grenzen, Max-, Min- und Schließknöpfe, während sie dennoch alle erwarteten Funktionen liefern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top