Altura de la ventana = "Auto" no funciona como se esperaba


Lo que estoy tratando de 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 calculando automáticamente todos los tamaños de controles de usuario contenidos, ¡pero esto en realidad no funciona!

En su lugar, obtengo una ventana grande con Actualwidth y Actualheight valores ambos establecidos en 512 (?!?!)

Declaración de 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

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

 209
wpf
Author: Entrodus, 2009-05-01

3 answers

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

 376
Author: Muad'Dib,
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-08-20 13:08:37

Vieja pregunta 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, usted debe considerar:

MaxWidth="600"
MaxHeight="400"
 7
Author: Vishal,
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
2016-07-01 17:43:47

Bueno, no puedes establecer la altura de la ventana en auto, para hacer esto puedes usar un pequeño truco, nombrar el contenedor principal de la cuadrícula principal, establecer su altura en auto y luego enlazar la altura de la ventana a la altura de la cuadrícula principal

 3
Author: Feelbad Soussi Wolfgun DZ,
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
2016-06-08 18:37:57