Cambiar el color de fondo de la barra de título de WPF


Tengo una aplicación WPF para Windows. Necesito cambiar el color de fondo de la barra de título. ¿Cómo puedo hacer eso?

Author: bluish, 2009-08-16

4 answers

En WPF la barra de título es parte del área no cliente, que no se puede modificar a través de la clase WPF window. Necesitas manipular los mangos de Win32 (si no recuerdo mal).
Este artículo podría ser útil para usted: Ventana personalizada Chrome en WPF.

 12
Author: Marcel B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-14 16:55:03

Aquí hay un ejemplo de cómo lograr esto:

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

Manejar los eventos de clic en el código detrás.

Para MouseDown -

App.Current.MainWindow.DragMove();

Para El Botón Minimizar -

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

Para DoubleClick y 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;
        }

Espero que esto ayude.

- Sushant

 18
Author: Sushant Khurana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-16 09:18:12

También puede crear una ventana sin bordes, y hacer que los bordes y la barra de título usted mismo

 9
Author: Thomas Levesque,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-16 00:24:22

Compruebe el siguiente ejemplo WPF personalizando la apariencia de una ventana en XAML

Este ejemplo muestra cómo personalizar completamente el estilo/apariencia de una ventana, incluidas las áreas que no son clientes: barra de título, bordes, botones max, min y close, al mismo tiempo que proporciona toda la funcionalidad esperada.

 1
Author: Abou-Emish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-13 11:53:25