Высота окна = "Авто" не работает должным образом - PullRequest
216 голосов
/ 01 мая 2009

То, что я пытаюсь сделать, это показать окно, которое явно не имеет высоты / ширины (оба значения опущены или установлены на 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

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

Ответы [ 4 ]

389 голосов
/ 01 мая 2009

Установить свойство окна SizeToContent to "WidthAndHeight". Это должно помочь.

7 голосов
/ 01 июля 2016

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

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

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

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

MaxWidth="600"
MaxHeight="400"
3 голосов
/ 08 июня 2016

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

0 голосов
/ 30 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...