【发布时间】:2013-03-03 22:37:33
【问题描述】:
我有以下 XAML(简化):
<Grid x:Name="parentGrid">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<!-- content which fits its parent grid -->
</Grid>
<Grid Grid.Row="1">
<!-- content which fits its parent grid -->
</Grid>
<Grid Grid.Row="2">
<!-- content which fits its parent grid -->
</Grid>
<Grid Grid.Row="3">
<!-- content which fits its parent grid -->
</Grid>
</Grid>
这是一个可配置的容器,其中包含一到四个我们的对话框。这个容器被重用了很多,包含的对话框的数量总是不同的。
要求是,如果只有一个对话框(所以只有第一个网格被填充),它应该延伸到整个父网格。如果填充了两个网格,则每个容器应填充父网格的一半。如果有三个......等等。
我无法使用<RowDefinition Height="Auto"/>(无论如何默认)和<RowDefinition Height="*"/>。例如,如果只有一个 Grid 填充,它不适合整个父网格。如果我删除三个RowDefinitions,它仍然有效。
附加信息:未填充网格的可见性始终设置为Visibility.Collapsed。
【问题讨论】:
-
Width="Auto" 将用于列,您尝试过 Height="Auto" 吗?或者也许不使用 Grid 作为您的 Parent,而是尝试使用 StackPanel?
-
我觉得这应该很容易,但我找不到简单的解决方案,所以也许不是。设置
Height="Auto"没有帮助,因为这会将行的大小调整为内容大小,并且内容大小会根据项目的数量而有所不同。可能可以使用转换器做到这一点,但如果不知道是什么决定了显示哪些网格以及如何使用这个容器,就很难说清楚。另一个可以尝试的想法是UniformGrid与Rows属性绑定到可见项目的数量,但这再次取决于如何确定可见项目的数量。 -
啊,我没有注意父部分的填充。我喜欢 Rachels 的 UniformGrid 想法,她推荐的行绑定。可以对常规网格做同样的事情,但我认为这将是你最好的路线。 +1
-
对不起,我的意思是
Height,当然。那只是一个打字错误。但是,这个UniformGrid在 Silverlight 5 中可用吗? @Rachel:抱歉,#是什么意思? -
@ebeeb 抱歉,# 是表示数字的一种懒惰方式。您可能可以使用
UniformGrid,它的Rows属性绑定到{Binding NumberItems},但这取决于是否有属性可以告诉您有多少项目。另外,如果UniformGrid在 Silverlight 中不可用,您可以尝试使用一些 AttachedProperties from my blog 来绑定常规 Grid 的RowCount
标签: wpf silverlight xaml