Xaml 当没有足够的空间时,为什么栅格会剪裁?
考虑以下代码:Xaml 当没有足够的空间时,为什么栅格会剪裁?,xaml,layout,uwp,Xaml,Layout,Uwp,考虑以下代码: <Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="100" /> </Grid.RowDefinitions> <Grid Grid.Row="1" Height="100"> <Rectangle
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<Grid
Grid.Row="1"
Height="100">
<Rectangle
Fill="Red" />
<Rectangle
Fill="Yellow"
Width="50"
Height="50"
Margin="0,-100,0,0" />
</Grid>
</Grid>
这很好,黄色矩形的一半显示在红色上方(即,叠加上行中的任何内容)。现在,如果我将RowDefinition的高度改为99而不是100,这样内部网格就不会得到它所要求的空间,黄色矩形就会被剪裁。有人知道这是为什么吗?有什么解决办法吗?我知道,理想情况下,不应该为内部网格定义高度,但这是我无法控制的…不确定幕后会发生什么,但我怀疑,当计算网格的空间且其高度大于可用高度时,将对其进行剪裁-检查每个元素是否适合该行。当高度低于可用高度时,可能会使用此选项,因此负边距可能会起作用。至少我是这么想的。如果你想要更精确的信息,你可以试着去挖掘 但是,如果希望栅格跟随行的高度,我建议使用垂直对齐:
就我个人而言,我不喜欢元素定位的固定边距,可能有更好的方法来安排元素,尽管这取决于您的需要。不确定幕后会发生什么,但我怀疑,当计算网格的空间且其高度大于可用空间时,然后对其进行剪裁-检查每个元素是否适合该行。当高度低于可用高度时,可能会使用此选项,因此负边距可能会起作用。至少我是这么想的。如果你想要更精确的信息,你可以试着去挖掘 但是,如果希望栅格跟随行的高度,我建议使用垂直对齐:
就个人而言,我不喜欢元素定位的固定边距,可能有更好的方法来安排元素,尽管这取决于您的需要。找到了一个解决方法;将行高设置为“自动”,并为内部网格提供负的底部边距。仍然没有关于剪辑的线索。找到了一个解决方法;将行高设置为“自动”,并为内部网格提供负的底部边距。但仍然没有关于剪辑的线索。
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<Grid Grid.Row="1" VerticalAlignment="Stretch">
<Rectangle Fill="Red"/>
<Rectangle Fill="Yellow" Width="50" Height="50" Margin="0,-100,0,0" />
</Grid>
</Grid>