Saltar al contenido

Ventana sin bordes que no se maximiza correctamente

Posterior a buscar en diferentes repositorios y foros al terminar descubrimos la resolución que te compartiremos ahora.

Solución:

Por diseño (por qué razón, no lo sé), cuando tienes WindowStyle="None" y maximiza la ventana, se extenderá más allá del borde real de la pantalla en varios píxeles en todos los lados.

En su código, está restringiendo el tamaño real de la ventana a las dimensiones exactas del área de trabajo. Dado que la maximización de la ventana aún coloca la esquina superior izquierda de la ventana esos varios píxeles a la izquierda y por encima de la esquina superior izquierda del área de trabajo, la parte visible de la ventana es necesariamente menor que el ancho total del trabajo. área, de ahí el área expuesta a la derecha y la parte inferior.

Como señaló el comentarista Evk, al eliminar la restricción de tamaño en la ventana (lo que puede hacer solo cuando la ventana está maximizada, si lo desea), la ventana puede expandirse al tamaño completo que WPF desea, lo que garantiza una cobertura total del área de trabajo.

En su comentario de seguimiento, no está claro si realmente desea que la barra de tareas esté cubierta o no. En cualquier caso, puede encontrar estos enlaces útiles para abordar sus necesidades específicas en ese sentido:
Maximice la ventana con el problema WindowState (la aplicación ocultará la barra de tareas de Windows)
Maximizando la ventana (con WindowStyle=None) considerando la barra de tareas

Como alternativa, aún puede establecer la restricción de tamaño, pero tenga en cuenta el margen de píxeles adicional en el que WPF insiste cuando se maximiza la ventana, configurando las dimensiones más grandes de lo necesario para que no haya un área expuesta.

Por lo que vale, aquí hay un ejemplo de código simplificado que se enfoca únicamente en el comportamiento específico aquí:


  
    
      
      
      
      
        
          
          
        
      
    
  
  
  
  
    
      
      
    
    
      
      
    
    
    
    
    
  

Y por supuesto:

public partial class MainWindow : Window

    public MainWindow()
    
        this.MaxHeight = SystemParameters.WorkArea.Height;
        this.MaxWidth = SystemParameters.WorkArea.Width;

        // Compensate for the extra space WPF adds by increasing the max width and height here
        //this.MaxHeight = SystemParameters.WorkArea.Height + 12;
        //this.MaxWidth = SystemParameters.WorkArea.Width + 12;

        InitializeComponent();
    

he incluido TextBlock elementos en las cuatro esquinas para que sea más fácil ver cómo el tamaño de la ventana se ve afectado por los diversos valores de propiedad.

Tuve el mismo problema, pero al cambiar el tamaño de la ventana con

Me.ResizeMode = ResizeMode.NoResize 

al cambiar el estado de la ventana a maximizado, elimina el problema

Si te ha resultado de provecho este post, nos gustaría que lo compartas con más entusiastas de la programación de esta forma contrubuyes a difundir nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *