2009-05-01 13 views
197

Lo que intento hacer es mostrar una ventana, que no tiene explícitamente un alto/ancho, (ambos valores omitidos o establecidos en Auto). Estaba adivinando que la ventana descubriría su tamaño mediante el cálculo automático de todos los tamaños de controles de usuario contenidos, ¡pero esto en realidad no funciona!Altura de ventana = "Auto" no funciona como se esperaba

En vez me sale una ventana grande con Actualwidth y Actualheight valores tanto ajustado a 512

declaración

Ventana (?!?!):

<Window x:Class="Window3" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window3" 
    Height="Auto"> 
<StackPanel> 
    <Label>Window</Label> 
</StackPanel> 
</Window> 

Mostrando esta ventana como un diálogo a través de:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click 
    Dim dlg As New Window3 
    dlg.ShowDialog() 
End Sub 

¿Existe una solución para esto? No quiero establecer explícitamente el tamaño de mi ventana porque muchos controles en el formulario se colapsarán según los parámetros del constructor, y tratar de encontrar el tamaño real del formulario sería complicado (y feo).

+6

También puede querer centrar la ventana con '' .WindowStartupLocation' establece en "CenterScreen" ' –

Respuesta

360

Establezca la propiedad SizeToContent to "WidthAndHeight" de la ventana. Esto debería ayudar.

+75

para la gente perezosa que quieren copiar y pegar' SizeToContent = "WidthAndHeight" ';) –

+4

Tenga cuidado al usar SizeToContent = "WidthAndHeight", si el tamaño del contenido de la ventana aumenta más que el tamaño de la pantalla, la ventana puede desbordarse de la pantalla. –

3

Bueno, no puede establecer la altura de la ventana en automático, para hacerlo puede usar un pequeño truco, nombrar el contenedor de la grilla principal principal, establecer su altura en automático y luego vincular la altura de la ventana a la altura de la grilla principal

7

pregunta viejo pero una respuesta actualizada:

Como @ Muad'Dib sugirió en su respuesta:

debe establecer SizeToContent="WidthAndHeight".

Si el tamaño del contenido de la ventana aumenta más que el tamaño de la pantalla, la ventana puede desbordarse de la pantalla. Por lo tanto, debe tener en cuenta:

MaxWidth="600" 
MaxHeight="400" 
+0

¿Y qué hacer cuando no se respeta 'MaxHeight =" 400 "'? crece hasta el límite de la pantalla? – andrepaulo

Cuestiones relacionadas