XAML用户控件/窗口大小调整

时间:2013-12-04 15:50:03

标签: c# wpf 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>

视图(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的解决方案来实现这一点会很好。

1 个答案:

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