如何实现StackPanel和UniformGrid行为的混合?

时间:2014-04-04 19:44:26

标签: c# wpf xaml

我想将元素放在控件中,以便它们最初适合这样(如StackPanel水平方向):

enter image description here

但是,当元素叠加到它们不再适合屏幕时,我希望它们开始表现得像这样:

enter image description here

UniformGrid类似:随着元素数量的增加,它们会变小。

最好的或有什么方法可以做到这一点?由于外部控件的大小是可变的(取决于用户的屏幕大小),我不能“破解”它使用一个或另一个组件,具体取决于元素的数量,因为我无法预测“打破”所需的数量屏幕。

1 个答案:

答案 0 :(得分:4)

最简单/最快的路线,将其设置为ViewBox并将其设置为Stretch="Uniform"为您执行此操作,如下所示,只需添加/减去矩形即可获得概念...

<Viewbox Stretch="Uniform" MaxHeight="60" MaxWidth="200">
    <StackPanel Orientation="Horizontal">
         <Rectangle Fill="Red" Margin="5" Height="50" Width="50"/>
         <Rectangle Fill="Red" Margin="5" Height="50" Width="50"/>
         <Rectangle Fill="Red" Margin="5" Height="50" Width="50"/>
         <Rectangle Fill="Red" Margin="5" Height="50" Width="50"/>
         <Rectangle Fill="Red" Margin="5" Height="50" Width="50"/>
         <Rectangle Fill="Red" Margin="5" Height="50" Width="50"/>
         <Rectangle Fill="Red" Margin="5" Height="50" Width="50"/>
         <Rectangle Fill="Red" Margin="5" Height="50" Width="50"/>
         <Rectangle Fill="Red" Margin="5" Height="50" Width="50"/>
         <Rectangle Fill="Red" Margin="5" Height="50" Width="50"/>
     </StackPanel>
</Viewbox>

希望这会有所帮助。干杯