Я создал базовую структуру, которая позволяет мне отображать представления в модальном диалоговом окне. Окно «контейнер» выглядит примерно так (только XAML, имеющей отношение к моей проблеме): -Пользовательский контроль XAML/размер окна
<Window SizeToContent="WidthAndHeight"
ResizeMode="{Binding DialogResizeMode}">
<DockPanel LastChildFill="True">
<Border DockPanel.Dock="Bottom">
<!-- This is where the buttons are rendered -->
</Border>
<ContentControl />
</DockPanel>
</Window>
Просмотров (элементы управления UserControl) помещаются в ContentControl
, с типичным видом смотрит что-то вроде этого: -
<UserControl ..the usual stuff..
Width="500"
Height="400">
<!-- etc. -->
</UserControl>
Установив ширину и высоту, это означает, что представление может эффективно управлять размерами модального диалога (из-за установки окна SizeToContent="WidthAndHeight"
в окне контейнера).
Проблема в том, что теперь мне нужно сделать диалог изменчивым в некоторых сценариях. Если я установил родительский Window ResizeMode
в CanResize
, пользовательский элемент управления останется в фиксированном размере в центре диалога, так как окно будет изменено.
Я подозреваю, что мне нужно будет использовать другой подход к настройке начального размера окна, например, предоставить ширину и высоту окна для привязки (если только я не пропустил простое решение). Какие-либо предложения?
Редактировать
Я нашел решение, удалив SizeToContent
опции из родительского окна и удаления Ширина & Высоты от пользовательского элемента управления XAML. Теперь я установить размер окна из нагруженного события пользовательского элемента управления: -
var window = Window.GetWindow(this);
window.Width = 500;
window.Height = 400;
Он чувствует себя немного Hacky, хотя - это было бы хорошо, если бы это могло быть достигнуто с помощью XAML-единственное решение.
Я хочу, чтобы пользовательский элемент управления (вид) устанавливал размеры окна, а не наоборот. Окно представляет собой контейнер, который я использую для отображения представлений в виде модальных диалогов, и, как объяснялось выше, я бы установил ширину и высоту представления и размер окна соответствовал бы содержимому. Теперь у меня есть требование показать диалоги изменения размеров, но этот трюк не работает, когда ResizeMode = CanResize родительского окна - окно первоначально отображается с правильным размером, но по мере того, как вы перетаскиваете его больше, UC остается в центре окна в его «фиксированных» размерах. –
В приведенном выше стиле, если вы добавите еще один триггер для 'CanResize' и установите горизонтальное и вертикальное выравнивание в' Stretch', с 'MinHeight' и' MinWidth' вместо 'Height' и' Width', что произойдет? –