Панель стека не взаимодействует. У нас есть фиксированная ширина и переменное количество элементов, которые можно расположить слева направо.
У нас есть элемент управления, который размещает их на панели стека:
<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.
Является ли ответом написать специальный подкласс панели, который выделяет равную ширину содержащимся элементам?