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

我想把元素放在一个控件中,这样它们最初就像这样(就像一个水平方向的StackPanel ):

在此处输入图像描述

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

在此处输入图像描述

UniformGrid一样:随着元素数量的增加,它们变得更小。

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

最简单/最快的路线,把它放在一个ViewBox ,它设置为Stretch="Uniform"为你做,如下例所示,只需添加/减去矩形,你就会得到这个概念……

               

希望这可以帮助。 干杯