面板布局,以均匀地挤压项目以适应

时间:2012-02-24 10:20:26

标签: wpf layout stackpanel

我正在寻找一种像水平堆叠面板一样工作的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可以增长到(由于其固定大小为父级) ),它们被剪掉,而不是被迫进入较小的区域。

那么,有没有办法可以通过开箱即用的面板获得我想要的行为?

2 个答案:

答案 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>