我正在创建一个更适合MVVM的Silverlight对话框类。 ChildWindow
类有一些尴尬,这使得从视图模型难以管理。如何允许Silverlight弹出窗口调整其内容大小,但阻止其增长?
这意味着我需要声明我自己的用户界面。我拥有所有传统元素,包括一个Popup
控件和一个覆盖率为50%的不透明度。开/关行为也在起作用。
我遇到的问题是我的控件模板不能阻止对话框体的增长,以响应用户输入到TextBox
。当字符数量增长超过默认大小时,整个对话框主体水平延伸。显然这不是正常的行为。
我想要完成的是对话框主体根据内容适当调整自己的大小,但不能响应需要更多或更少空间的子控件来扩展或缩小。这是如何控制行为,但我已经检查了its template,我无法确定这是如何工作的。
我想我看到了扩展行为,因为我的模板基于Grid
s,它允许子控件的大小与它们请求的一样多。我试过StackPanel
,ScrollViewer
和其他布局没有成功的几个排列组合。有没有人对ChildWindow
如何实现其静态,内容大小的布局或其他建议有所了解?
这里的模板我迄今,精简到最基本的要素:
<Popup>
<Grid x:Name="overlay">
<Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
...Title...
</Grid>
<Grid Grid.Row="1">
<ContentControl Content="{TemplateBinding DialogBody}" />
</Grid>
</Grid>
</Border>
</Grid>
</Popup>
当DialogBody
包含TextBox
或其他任何这改变版面大小,如隐藏的控制,整个内容Popup
增长。我不想诉诸静态宽度和高度,因为我想让对话框自动调整大小到对话框主体,但最初只有。
这很有趣。我正在使用可从行为中触发的可浮动子窗口。我还有几个实现有用户输入,我想知道我是否会遇到同样的问题。自从可浮动子窗口继承子窗口后,我将发布我的结果。 – 2011-04-03 06:49:49