Определение размеров окон WPF автоматически - PullRequest
2 голосов
/ 21 мая 2011

При проектировании диалоговых окон WPF в конструкторе XAML (размер которых пользователь не может изменять вручную), окна автоматически изменяют размер в соответствии со своим содержимым, и все в порядке. Но когда я запускаю свое приложение, окна становятся огромными, и в них много пустого пространства.

Я знаю, что это «особенность» WPF, которую можно «исправить», установив тег SizeToContent, но при этом возникает другая проблема: если в окне, например, есть текстовое поле, и пользователь вводит Данные, которые переполняют видимую область, окно будет растягиваться, чтобы вместить его. Это происходит со списками, древовидными списками, вы называете это.

Все, что я хочу, - это чтобы Visual Studio вычислил идеальный размер окна, который он показывает мне во время разработки, а затем установил для окна такой же размер во время выполнения, и после этого не изменял размер. Кажется, это должно быть легко.

Редактировать: Выяснил часть проблемы: у меня есть элементы управления, настроенные в сетке, и ширина столбца установлена ​​на "Авто", поэтому все размеры изменяются.

Ответы [ 3 ]

2 голосов
/ 04 мая 2013

Использование Просмотр Box

ViewBox - очень полезный элемент управления в WPF. Если ничего не делает, кроме масштабирования, чтобы подогнать содержимое к доступному размеру. Он не изменяет размер содержимого, но трансформирует его. Это означает, что также все размеры текста и ширины линий были масштабированы. Примерно такое же поведение, как если бы вы установили для свойства Stretch для изображения или пути значение Uniform.

Хотя его можно использовать для размещения любого типа элемента управления, он часто используется для 2D-графики или для встраивания масштабируемой части пользовательского интерфейса в область экрана.

<Viewbox>
<Enter your code/>
</Viewbox>
1 голос
/ 21 мая 2011

Я не думаю, что это то, что обычно запрашивают, так что это, вероятно, нелегко сделать, один из способов, о котором я могу подумать, это начать с автоматического SizeToContent и обработать событие Loaded и установить:

Height = ActualHeight;
Width = ActualWidth;
SizeToContent = System.Windows.SizeToContent.Manual;
1 голос
/ 21 мая 2011

Попробуйте установить высоту и ширину окна на Авто.Также удалите атрибут SizeToContent.Это должно это исправить.

...