我正在使用Grid
- 这样的控件:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="10"></RowDefinition>
<RowDefinition Height="10"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="10"></RowDefinition>
</Grid.RowDefinitions>
<Rectangle Grid.Row="0" Fill="Red"></Rectangle>
<Rectangle Grid.Row="1" Fill="Green"></Rectangle>
<Rectangle Grid.Row="2" Fill="Yellow"></Rectangle>
<Rectangle Grid.Row="3" Fill="Gray"></Rectangle>
</Grid>
假设网格的高度为50像素。显然,行的高度将分别为10,10,20和10像素。
现在假设网格的高度为29像素。在这种情况下,高度将是10,10,0和 9 像素,这意味着最后一行被剪裁。
有没有办法分配行将被裁剪的订单?例如,我希望网格开始剪切第二行(绿色矩形)而不是最后一行,因此网格高度为29像素时,行的高度将为10, 9 ,0和10像素。
答案 0 :(得分:3)
[下载工具包here]
这是DockPanel
拯救的地方(这是用WPF编写的,但在SL中应该与工具包类似,只需添加正确的xmlns):
<DockPanel>
<Rectangle DockPanel.Dock="Top"
Height="10"
Fill="Red" />
<Rectangle DockPanel.Dock="Bottom"
Height="10"
Fill="Gray" />
<Rectangle DockPanel.Dock="Top"
Height="10"
Fill="Green" />
<Rectangle Fill="Yellow" />
</DockPanel>
一些注意事项:
DockPanel
可能有所帮助,但并非总是如此。DockPanel
将首先剪辑其最后一个孩子,然后是最后一个孩子,依此类推至第一个孩子。孩子的顺序非常重要,不是很直观,要注意每个孩子的顺序,并且DockPanel.Dock
设置。DockPanel
确实是版面系统的无名英雄。 :)你只在评论中提到红色和绿色矩形,所以我猜黄色仍然占用所有可用高度(星形行),但我不确定灰色矩形。基于此,我找到了两个选项。
对于黄色的剪辑顺序 - &gt;红色 - &gt;绿色 - &gt;灰色:
<DockPanel>
<Rectangle DockPanel.Dock="Bottom"
Height="10"
Fill="Gray" />
<DockPanel DockPanel.Dock="Top">
<Rectangle DockPanel.Dock="Bottom"
Height="10"
Fill="Green" />
<Rectangle DockPanel.Dock="Top"
Height="10"
Fill="Red" />
</DockPanel>
<Rectangle Fill="Yellow" />
</DockPanel>
对于黄色的剪辑顺序 - &gt;灰色 - &gt;红色 - &gt;绿色:
<DockPanel>
<DockPanel DockPanel.Dock="Top">
<Rectangle DockPanel.Dock="Bottom"
Height="10"
Fill="Green" />
<Rectangle DockPanel.Dock="Top"
Height="10"
Fill="Red" />
</DockPanel>
<Rectangle DockPanel.Dock="Bottom"
Height="10"
Fill="Gray" />
<Rectangle Fill="Yellow" />
</DockPanel>
黄色的剪切顺序 - &gt;红色 - &gt;灰色 - &gt;格林,我现在没有答案。这更具挑战性,告诉我你是否需要它。