要素のコレクションがあり、それぞれに名前と画像ブロブのサブコレクションがあります。各項目が各 MainElements を表すアコーディオンを表示したいと考えています。各要素内で、上記の MainElement のサブコレクションに画像を表示します。アコーディオンはユーザーによってサイズ変更されるため、画像の表示にはラップパネルを使用します。アコーディオンの幅が十分に広い場合、画像は各行にできるだけ多く収まるように並べ替えられます。ラップパネルが行ごとに1つの画像しか表示しない場合に問題が発生します(それ以上のスペースがないため)、画像リストは続きますが、コントロールの高さに収まらないため、すべての画像を表示できません. 画像リストを下にスクロールできるように、AccordionItem 内に垂直スクロールバーを表示する必要があります。だから、ここに私のコードがあります:
<layoutToolkit:Accordion Width="Auto" Height="Auto" ItemsSource="{Binding MainElementCollection}">
<layoutToolkit:Accordion.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding MainElementName}" />
</DataTemplate>
</layoutToolkit:Accordion.ItemTemplate>
<layoutToolkit:Accordion.ContentTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding SubElementCollection}" ScrollViewer.VerticalScrollBarVisibility="Auto" >
<ItemsControl.Template>
<ControlTemplate>
<controlsToolkit:WrapPanel />
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Image Margin="2" Width="150" Source="{Binding PreviewImage, Converter={StaticResource ImageConverter}}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</layoutToolkit:Accordion.ContentTemplate>
</layoutToolkit:Accordion>
http://www.silverlightshow.net/tips/How-to-add-scrollbars-to-ItemsControl.aspxは、このようにラップパネルをスクロールビューアーで囲む必要があることを示唆しています
<ItemsControl.Template>
<ControlTemplate>
<scrollviewer>
<controlsToolkit:WrapPanel />
</scrollviewer>
</ControlTemplate>
</ItemsControl.Template>
しかし、その後、ラップパネルが非常に小さくなり、小さな垂直スクロールバーしか表示されなくなります。何かアイデアはありますか? どうもありがとう。
編集:コントロールテンプレートで使用すると、ラップパネルの幅が失われることがわかりました
次のように使用する必要があります。
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<controlsToolkit:WrapPanel ScrollViewer.VerticalScrollBarVisibility="Visible" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
とにかく、私は ScrollViewer.VerticalScrollBarVisibility="Visible" 行を追加しようとしましたが、また立ち往生しています。
再度編集:
今、私のラップパネルは次のようになります。
<ItemsControl ItemsSource="{Binding StageVideos}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<controlsToolkit:WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Margin="2" Width="150" Cursor="Hand" MouseLeftButtonDown="videoPreview_MouseLeftButtonDown" Tag="{Binding}" Source="{Binding PreviewImage, Converter={StaticResource ImageConverter}}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.Template>
<ControlTemplate>
<ScrollViewer VerticalScrollBarVisibility="Visible">
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
アイテム パネルとして wrappanel を使用しており、ControlTemplate を使用してプレゼンターをスクロールビューアーで囲んでいます。それでも、運が悪い:/