2017-03-03 11 views
0

グリッドビューには多数のアイテムが設定されています...各アイテムにはイメージがあります。ユーザーがスクロールダウンすると、仮想化によって一部の項目が未実現になります。また、ユーザーがスクロールして表示すると、データ、画像ソースの更新が開始されます。問題は、画像ソースを更新するとUIがブロックされ、グリッド内のアイテムは画像が読み込まれるまで表示されないということです。これは悪い、と非常に途切れスクロールが見えます...ここでc#uwp仮想化の問題

は、GridViewの中でやっている仮想化の例である:

私の質問は、仮想化を実現させるだろうアイテムの数を設定する方法であり、 ?

+0

それがどのように行われているのか正確には分かりません。あなたは 'GridView'の' ItemsPanel'を試してみることができます。デフォルトは '' ItemsWrapGrid'です(https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls .itemswrapgrid)あなたに役立つものがあるかどうか確認してください。しかし、イメージがロードされている間スムーズなスクロールを実現する別の方法があります。 ['x:Phase'](https://docs.microsoft.com/en-us/windows/uwp/xaml-platform/x-phase-attribute)を使うことができます。 – Corcus

答えて

0

仮想化パネルのCacheLengthプロパティを使用してください。

<ListView> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <ItemsStackPanel CacheLength="0" /> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
</ListView> 

キャッシュの長さがビューポートの倍数である場合。したがって、3つのアイテムがウィンドウに表示され、キャッシュの長さが1の場合、3つの実現アイテムが前に、3つの実現アイテムが(3 + 3 + 3 = 9)になります。キャッシュ長が2の場合、6 + 6 = 15 + 3、等

これは、同様GridViewで動作:仮想化はそれほどオープンソースではない `GridView`制御によって処理される

<GridView> 
    <GridView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <ItemsWrapGrid CacheLength="0" /> 
     </ItemsPanelTemplate> 
    </GridView.ItemsPanel> 
</GridView> 
関連する問題