我有一个DataTemplate,其中三列排列在一个网格中,我希望整个网格的高度取决于第一列内容的高度。这些是我尝试的解决方案,但我可能没有做到这一点......
如果Column0的高度是硬代码,则只有(2)有效,但这不是必需的。奇怪的是(1)不起作用,因为测量/安排Xaml显示过程似乎应该允许它。
结果是,列的高度似乎始终是Grid本身容器的高度。结果,似乎不可能做出像这样优雅的事情......
<Grid>
<Grid Grid.Column="0" x:Name="Column0">
...
</Grid>
<Grid
Grid.Column="1"
Height="{Binding ElementName=Column0,Path=Height}"
>
...
</Grid>
<Grid
Grid.Column="1"
Height="{Binding ElementName=Column0,Path=Height}"
>
...
</Grid>
</Grid>
或
<Grid Height="{Binding ElementName=Column0,Path=Height}">
<Grid Grid.Column="0" x:Name="Column0">...</Grid>
<Grid Grid.Column="1">...</Grid>
<Grid Grid.Column="2">...</Grid>
</Grid>
答案 0 :(得分:0)
使用,
Height="{Binding ElementName=Column0,Path=ActualHeight}"
“高度”属性仅仅是“建议的”高度,并且在测量和排列阶段后确定。似乎。
注意:第一种和第二种方法都可以使用,但行为略有不同,但可能是由于子列的特定控制。基本上,Column0的子网格将尊重它的容器的高度,因此它不会报告它的实际高度的变化,直到它无法帮助它(其中一行已经扩展太远而无法缩小其他行)容纳它)。这对“ActualHeight”来说不合理。