我正在寻找一种像水平堆叠面板一样工作的WPF布局,这样当有足够的空间让它们适合时,物品会选择自己理想的宽度,但如果物品不适合它们,则还可以均匀地压扁物品。可用面板空间。
我可以接近我想要的东西:
<Grid Width="400" Height="80">
<UniformGrid Rows="1" HorizontalAlignment="Left">
<Button Content="Long Button" />
<Button Content="Very Long Button" />
<Button Content="Button" />
<Button Content="Button" />
<Button Content="Button" />
</UniformGrid>
</Grid>
这里的问题是UniformGrid
使所有按钮保持相同的宽度。
如果我将UniformGrid
替换为StackPanel
,那么这些项目的大小正确,但当它们超出最大大小时StackPanel
可以增长到(由于其固定大小为父级) ),它们被剪掉,而不是被迫进入较小的区域。
那么,有没有办法可以通过开箱即用的面板获得我想要的行为?
答案 0 :(得分:1)
那么,有没有办法可以通过开箱即用的面板获得我想要的行为?
不,如果你看all the existing panels,你会看到没有一个符合要求的,实现你自己的。
答案 1 :(得分:0)
如果按钮的大小是静态的,您可以使用:
<Grid Width="400" Height="80">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Content="Long Button" />
<Button Grid.Column="1" Content="Very Long Button" />
<Button Grid.Column="2" Content="Button" />
<Button Grid.Column="3" Content="Button" />
<Button Grid.Column="4" Content="Button" />
</Grid>