2009-08-15 65 views

Respuesta

10

En WPF, la barra de título es parte del área no cliente, que no se puede modificar a través de la clase de ventana de WPF. Necesita manipular los identificadores de Win32 (si no recuerdo mal).
Este artículo podría ser útil para usted: Custom Window Chrome in WPF.

7

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

+5

Pero luego tiene que crear todas las funcionalidades de la barra de tareas usted mismo (como mover, maximizar/restaurar tamaño con doble clic, cerrar haciendo doble clic en el icono, ...). –

+0

sí ... pero no es gran cosa, por ejemplo, el método DragMove facilita la tarea de mover, y el resto es paz de pastel;) –

+4

lo sé ... pero construir una barra de título propia me parece un sucio truco . (además de crear el mismo Look & Feel es una tarea bastante difícil) –

14

He aquí 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> 

Mango Haga clic en Eventos en el código -detrás.

Para MouseDown -

App.Current.MainWindow.DragMove(); 

Para Minimizar Botón -

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

+0

ApplicationCommands.Close no funcionó para mí. Usé Application.Current.MainWindow.Close(); en un comando. Tampoco hay DoubleClick for Grid, utilicé MouseLeftButtonDown y lo usé. if (e.ClickCount == 2) { Maximizar(); } else { Application.Current.MainWindow.DragMove(); } – Tempeck

1

Comprobar el siguiente ejemplo WPF customizing the appearance of a window in XAML

Este ejemplo muestra cómo personalizar completamente el estilo/aparición de una ventana, incluyendo las áreas que no son clientes: barra de título, bordes, máximo, mínimo y cierre los botones mientras sigue brindando toda la funcionalidad esperada.

Cuestiones relacionadas