Я создал ListBox для отображения элементов в группах, где группы обернуты справа налево, когда они больше не могут вписываться в высоту панели ListBox. Таким образом, группы будут выглядеть подобно этому в ListBox, где высота каждой группы произвольно (группа 1, например, в два раза выше группы 2):WPF ListBox WrapPanel клипы длинные группы
[ 1 ][ 3 ][ 5 ]
[ ][ 4 ][ 6 ]
[ 2 ][ ]
Следующая XAML правильно работает в этом ему выполняет обертку и позволяет горизонтальной полосе прокрутки появляться, когда элементы работают с правой стороны ListBox.
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.GroupStyle>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical"
Height="{Binding Path=ActualHeight,
RelativeSource={RelativeSource
FindAncestor,
AncestorLevel=1,
AncestorType={x:Type ScrollContentPresenter}}}"/>
</ItemsPanelTemplate>
</ListBox.GroupStyle>
</ListBox>
Проблема возникает, когда группа элементов больше, чем высота WrapPanel. Вместо того, чтобы позволить вертикальной полосе прокрутки появляться для просмотра группы элементов отсечки, элементы в этой группе просто обрезаются. Я предполагаю, что это побочный эффект привязки Height в WrapPanel - полоса прокрутки думает, что ее не нужно активировать.
Есть ли способ включить панель прокрутки или по-другому вокруг этой проблемы, которую я не вижу?
Это * почти * точное решение, в котором я нуждаюсь. Он позволяет выполнять вертикальную прокрутку, но останавливать горизонтальную прокрутку.Я немного изменил его (измененный код, показанный в следующем ответе), и он отлично работает. Спасибо, Эйб. – 2008-09-17 12:42:30