-1
長いページにScrollViewer
(Webページなど)があります。ItemsControlのXAML仮想化
ページには、遅延読み込みの無限スクロールコンテンツのヘッダーとリストが含まれています。ヘッダーはリストの内容でスクロールする必要があります。ヘッダーの高さはリスト項目の高さの5倍です。
これを仮想化する良い方法はありますか?
私が試した何<ScrollViewer>
<StackPanel>
<TextBlock Text="Header:" />
<StackPanel Orientation="Horizontal" Height="500">
<!--Complex UI-->
</StackPanel>
<TextBlock Text="Videos:"/>
<ItemsControl ItemsSource="{Binding Videos}"
ItemsTemplate="{StaticResource VideoDataTemplate}" />
</StackPanel>
</ScrollViewer>
:
- をヘッダ/リスト項目の
DataTemplateSelector
を作成し、1ItemsControl
にすべてをかけます。 理由: スクロールビューアーCanContentScroll="True"
スクロールヘッダーを最初のスクロールダッシュでスクロールします。ヘッダーが大きすぎるため、これは受け入れられません。 - 2つを作る
ScrollViewers
。 1つはヘッダーのマージンが大きいもの、もう1つはヘッダーの高さがマージンのものです。 理由:トップオフセットとマウスイベントを同期させるのが難しい。
ItemsControlのVirtualizingPanel.ScrollUnitプロパティをPixelに設定し、最初の方法を使用するとどうなりますか? – mm8
私はその解決策で空のプロジェクトを作成しました。それは超不安定で、少し下にスクロールするとクラッシュする。アイテムの高さが異なるためです。ここに要点があります:https://gist.github.com/Mikolaytis/82e739aa6adaea328d5369bf3132f016 – Mikolaytis
私は空のプロジェクトを作ったと言いました!私は要点へのリンクを付けました。私は要点コメントにクラッシュの詳細を添付しました。空のプロジェクトを作成し、要点コードをコピーして試すことができます。または、ここからプロジェクトをダウンロードしてテストしてください:https://drive.google.com/open?id=0B38_Y0INL95-NzFEejk1Vi1LV2s – Mikolaytis