【发布时间】:2016-12-15 14:12:16
【问题描述】:
我有一个Window:
<Window x:Class="ClientApp.Views.ModalWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="" Height="332" Width="536" >
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0">
<ContentControl Content="{Binding Path=InlaidViewModel}" Margin="0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</Grid>
</Window>
在运行时,ContentControl 上的 InlaidViewModel 绑定是根据应用程序中的其他值设置的。如何在绑定时将Window 上的MinHeight 和MinWidth 设置为嵌入式控件上的相同值?例如:
<Window x:Class="Roryap.BillCalendar.ClientApp.Views.ModalWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="" Height="332" Width="536"
MinHeight="{Binding **what goes here**}" MinWidth="{Binding **what goes here**}">
我知道我可以为 Window 的底层视图模型添加属性以绑定到这些值,但我不确定我是否想这样做,这更像是一种好奇心。
问题是:如果我不想为我的窗口拥有MinHeight 和MinWidth 的视图模型属性,有没有办法从运行时绑定的嵌入式控件继承这些值?
【问题讨论】:
-
UserControl可以遍历视觉树直到Window,这是有道理的,因为嵌入式控件定义了大小。或者您可以简单地使用自动调整窗口(请参阅SizeToContent),不确定它是否适用于您的情况。 -
如果嵌入式控件是同一个 DOM 的一部分并且同一个 measure()/arrange() 传递,那么你可以通过
MinHeight="{Binding ActualHeight, ElementName=EmbeddedControlName}"来引用它的渲染大小,如果我理解的话问题正确。 -
@ChrisW。 ——我喜欢它的发展方向。我对 XAML 相当缺乏经验;您能否详细说明该控件是同一个 DOM 和测量/排列通道的一部分?什么时候调用的?
-
@ChrisW。 ——对不起,菜鸟评论^。我现在正在阅读它。这是一个好帖子:csharpramblings.blogspot.com/2012/05/…
-
仍然,我无法找到有关如何根据运行时绑定结果的嵌入式控件安排容器布局的信息。