Высота окна = "Авто" не работает должным образом

То, что я пытаюсь сделать, это показать окно, которое явно не имеет высоты/ширины (оба значения опущены или установлены на Auto). Я предполагал, что окно узнает его размер, автоматически вычисляя все содержащиеся размеры пользовательского контроля, но это на самом деле не работает!

Вместо этого я получаю большое окно с Actualwidth и Actualheight значениями, установленными на 512 (?!?!)

Объявление окна:

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

Отображение этого окна в виде диалога через:

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

Есть ли решение для этого? Я не хочу явно устанавливать размер моего окна, потому что многие элементы управления в форме будут свернуты на основе параметров конструктора, и попытка найти фактический размер формы будет сложной (и уродливой).

Ответ 1

Задайте свойство window SizeToContent to "WidthAndHeight". Это должно помочь.

Ответ 2

Старый вопрос, но обновленный ответ:

Как @Muad'Dib предложил в своем ответе:

вы должны установить SizeToContent="WidthAndHeight".

Если размер содержимого окна увеличивается больше, чем размер экрана, окно может переполняться с экрана. Итак, вы должны учитывать:

MaxWidth="600"
MaxHeight="400"

Ответ 3

Ну, вы не можете установить высоту окна в auto, для этого вы можете использовать небольшой трюк, назовите основной основной контейнер сетки, установите его высоту на авто, а затем привяжите высоту окна к высоте основной сетки

Ответ 4

Установить размер в curent screen с загруженными окнами событий