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