我创建了一个基本框架,可以让我在模态对话框中显示视图。 “容器”窗口看起来像这样(只是与我的问题相关的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>
视图(UserControls)放在ContentControl
中,典型视图如下所示: -
<UserControl ..the usual stuff..
Width="500"
Height="400">
<!-- etc. -->
</UserControl>
通过设置宽度和高度,这意味着视图可以有效地控制模态对话框的尺寸(由于容器窗口的SizeToContent="WidthAndHeight"
设置)。
问题是,我现在需要在某些情况下使对话框可以调整大小。如果我将父窗口的ResizeMode
设置为CanResize
,则在调整窗口大小时,用户控件将保持在对话框中心的固定大小。
我怀疑我需要使用不同的方法来设置初始窗口大小,例如提供要绑定的窗口的宽度和高度(除非我缺少一个简单的解决方案)。有什么建议吗?
修改
我通过从父窗口中删除SizeToContent
选项并删除宽度和宽度来找到解决方案。用户控制XAMl的高度。我现在从用户控件的Loaded事件中设置窗口大小: -
var window = Window.GetWindow(this);
window.Width = 500;
window.Height = 400;
虽然感觉有点笨拙 - 如果可以使用仅限XAML的解决方案来实现这一点会很好。
答案 0 :(得分:0)
什么阻止您绑定到ResizeMode
属性,并使用Style
触发器来设置属性?有点像,
<Style TargetType="{x:Type UserControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ResizeMode, RelatveSource={RelativeSource AncestorType=Window}}" Value="NoResize">
<Setter Property="Width" Value="500"></Setter>
<Setter Property="Height" Value="400"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>