在WPF中以特定方式显示控件集合

在WPF中以特定方式显示控件集合,wpf,xaml,grid,wrappanel,uniformgrid,Wpf,Xaml,Grid,Wrappanel,Uniformgrid,我有一个控件“MyCollection”集合,其中包含运行时的更改。为此,我必须遵循一些约束,例如:如果我的参数“MyCollection.Count>=4”,则属性“NumberOfcolumns”的值为2,以便创建新行,并每两行显示两个控件 以下是我展示收藏的方式: <ItemsControl ItemsSource="{Binding MyCollection}" BorderThickness="0" HorizontalContentAlignment="Center" V

我有一个控件“MyCollection”集合,其中包含运行时的更改。为此,我必须遵循一些约束,例如:如果我的参数“MyCollection.Count>=4”,则属性“NumberOfcolumns”的值为2,以便创建新行,并每两行显示两个控件

以下是我展示收藏的方式:

<ItemsControl  ItemsSource="{Binding MyCollection}"  BorderThickness="0"  HorizontalContentAlignment="Center" VerticalContentAlignment="Center" >
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate >
      <UniformGrid   Columns="{Binding NumberOfColumns}"  VerticalAlignment="Center" HorizontalAlignment="Center" Background="Transparent"/>
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
</ItemsControl>

问题是我的控件有不同的大小,而在UniformGrids中,单元格是统一的。。。我的设计并不漂亮,因为我的小控件显示在大单元格中

有人能帮我解决这个问题吗

NB:如果可能,请给我一个详细的解决方案,而不是像“使用包装纸…”
还请注意,我正在关注MVVM,因此没有代码隐藏。

您能解释一些您希望Ui外观的详细信息吗?您不想听到的“使用
WrapPanel
”建议是一个简单的解决方案。。。你唯一的另一个解决办法是,@Sheridan,我不反对使用WrapPanel!我只是要求给我更多的细节!因为要定义WrapPAnel中的列数,您必须操纵“大小”,但在我的例子中,我只有要引用的元素数…@Alvaro,虽然您的评论没有问题,但我只想指出,您的“苛求”一词在这里可能不是一个好词。。。也许说英语的用户会更好地接受“请求”或“询问”。关于您的问题,您不需要设置
WrapPanel
中的列数,这将取决于包含控件的总体大小和其中元素的大小。@Sheridan,我为这个词感到抱歉,这是Google translator给我的,非常抱歉。。。我的WrapPanel的问题是,当我的集合中有两个以上的控件时,我看不到如何强制它创建新行。因为我认为使用这种尺寸并不能保证这一点!因为它可以把一个小控件+一个大控件放在一行中。它还可以将3个小控件放在同一行!!希望我是清楚的,再次为这个词感到抱歉。