C# XAML用户控件/窗口大小

C# XAML用户控件/窗口大小,c#,wpf,xaml,C#,Wpf,Xaml,我创建了一个基本框架,可以在模式对话框中显示视图。“container”窗口如下所示(仅与我的问题相关的XAML):- 通过设置宽度和高度,这意味着视图可以有效地控制模式对话框的尺寸(由于容器窗口的SizeToContent=“widthandeheight”设置) 问题是,我现在需要在某些情况下调整对话框的大小。如果我将父窗口的ResizeMode设置为CanResize,则在调整窗口大小时,用户控件在对话框中心保持固定大小 我怀疑我需要使用不同的方法来设置初始窗口大小,例如提供窗口绑定到的宽

我创建了一个基本框架,可以在模式对话框中显示视图。“container”窗口如下所示(仅与我的问题相关的XAML):-

通过设置宽度和高度,这意味着视图可以有效地控制模式对话框的尺寸(由于容器窗口的
SizeToContent=“widthandeheight”
设置)

问题是,我现在需要在某些情况下调整对话框的大小。如果我将父窗口的
ResizeMode
设置为
CanResize
,则在调整窗口大小时,用户控件在对话框中心保持固定大小

我怀疑我需要使用不同的方法来设置初始窗口大小,例如提供窗口绑定到的宽度和高度(除非我缺少一个简单的解决方案)。有什么建议吗

编辑

通过从父窗口中删除
SizeToContent
选项,并从用户控件XAMl中删除宽度和高度,我找到了一个解决方案。现在,我根据用户控件的已加载事件设置窗口大小:-

var window = Window.GetWindow(this);
window.Width = 500;
window.Height = 400;

但是感觉有点不太好-如果可以使用仅限XAML的解决方案来实现这一点就太好了。

是什么阻止您绑定到
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>

我希望用户控件(视图)设置窗口的尺寸,而不是相反。窗口是一个容器,我使用它将视图显示为模式对话框,如上所述,我将设置视图的宽度和高度,窗口的大小将适合内容。我现在需要显示一个可调整大小的对话框,但是当父窗口的ResizeMode=CanResize时,这个技巧不起作用-窗口最初的大小是正确的,但是当你把它拖得更大时,UC会以“固定”的尺寸停留在窗口的中心。在上面的样式中,如果为
CanResize
添加另一个触发器,并使用
MinHeight
MinWidth
而不是
Height
Width
将水平和垂直对齐设置为
Stretch
,会发生什么?
var window = Window.GetWindow(this);
window.Width = 500;
window.Height = 400;
<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>