アイテムをグループで表示するためのリストボックスを作成しました。グループは、リストボックスのパネルの高さに収まらなくなったときに右から左に折り返されます。したがって、グループはリストボックスに次のように表示されます。各グループの高さは任意です(たとえば、グループ1の高さはグループ2の2倍です)。
[ 1 ][ 3 ][ 5 ]
[ ][ 4 ][ 6 ]
[ 2 ][ ]
次のXAMLは、折り返しを実行するという点で正しく機能し、アイテムがリストボックスの右側から実行されたときに水平スクロールバーを表示できるようにします。
<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の高さよりも長い場合に発生します。垂直スクロールバーにカットオフアイテムグループを表示させる代わりに、そのグループ内のアイテムは単にクリップされます。これは、WrapPanelのHeightバインディングの副作用であると想定しています。スクロールバーは、有効にする必要はないと考えています。
スクロールバーを有効にする方法、または私が見ないこの問題を回避する別の方法はありますか?