堆栈面板不合作。我们有一个固定的宽度,以及从左到右排列的可变数量的项目。
我们有一个项目控件,它使用堆栈面板来布置它们:
<ItemsControl x:Name="testItems"
HorizontalAlignment="Left"
VerticalAlignment="Top">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Stacktest:ItemControl />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
但这并不能正确调整项目的大小。无论有多少可用空间,它们的大小始终相同。如果项目太多,它们会在右侧被切断,而不是调整大小以使它们都适合。知道如何做到这一点吗?如果项目的数量是恒定的,我会使用网格,但事实并非如此。它通常是 1-4 项。
如果 ItemsPanelTemplate 可以是具有可变列数的网格,那就太好了。但我不知道在 ItemsPanelTemplate 中是否可能(或具有相同结果的东西)。
答案是编写一个特殊的面板子类,为包含的项目分配相等的宽度吗?