2017-01-29 4 views
3

私は先週、Microsoft News UWPアプリケーションのようなFlipViewを実装しようと苦労しました。UWP - FlipView - 単一アイテムのコンテンツのみを読み込むためにFlipViewが必要です

私は以下のことを試みました:FlipView ItemTemplateとObservableCollectionをアイテムに使用しました。 しかし、これにより、ObservableCollection内のアイテム全体がプリロードされてしまいました。これは私が望むものではありません。

FlipViewのこの動作を次のように変更できるようにするヒントがあります:最初のアイテムのみが読み込まれ、矢印をクリックすると次のアイテムが読み込まれます。事前に

感謝:)

UPDATE: 私は行動が@Sunteen呉ようであることを確認することができます - MSFTは言いました。 私はまた、@Martin Zikmundによってデモは、しかし、それは

前の項目をクリアしていなかった私の目標は、一度に1つのアイテムをロードすることで資金上の1に同様のロジックを使用してみました。そのような行動:
1)私は、私は次の>()矢印をクリックした場合)1つの項目
2を参照してください。
を*この項目は、次の項目が
ロードされているflipview
*からアンロードされます 3)私は<(前回)矢印をクリックした場合:
を*この項目は前の項目を再ロード

あるflipview
*からアンロードされます

誰かが助けてくれることを願っています。私は本当にその機能をユーザーに与えたいと思っています^^。

+0

3つのアイテムを読み込んでいるのはなぜですか?これは良いことです。それはあなたのユーザーのための最高のパフォーマンスと最高のメモリ使用を可能にします。 –

答えて

1

しかし、これは、コントロールのItemsPanelTemplateVirtualizingStackPanelが含まれている私のObservableCollection内のアイテムの全体の多くは、事前にロードする

FlipViewを引き起こしました。したがって、FlipViewコントロールはデフォルトで仮想化をサポートします。アプリケーションをデバッグするときにビジュアルツリーを確認することができます。FlipViewにバインドする項目の数に関係なく、デフォルトではFlipViewItemの3つだけを読み込みます。だから私の意見では、FlipViewは、デフォルトでは、あなたのObservableCollectionの全項目を事前にロードされません

enter image description here

あなたがItemPanelを変更しない限り、それは、前の、現在の1と次の1をロードすることができ仮想化をサポートしていないStackPanel

<FlipView x:Name="flipView1" Width="480" Height="270" 
    BorderBrush="Black" BorderThickness="1"> 
    <FlipView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel /> 
     </ItemsPanelTemplate> 
    </FlipView.ItemsPanel> 
    <FlipView.ItemTemplate> 
     ... 
    </FlipView.ItemTemplate> 
</FlipView> 

私は矢印をクリックしたときにのみ、最初の項目がロードされ、その後、次の項目がロードされます。私はあなたがまだこの機能を必要としないと思うように仮想化を使用してFlipViewとして

。それでも必要な場合は、FlipViewにソースをバインドしようとすると、インスタンスデータが空になり、選択が変更されるたびに強制的に内容が強制的にロードされます。これについては、similar threadを@Martin Zikmundが提供するdemoをシングルロード用に提供しています。

また、FlipViewのDo's and don'ts発言に従って:

各項目をめくるの反復運動として、大きなコレクションのフリップビューコントロールの使用を避けるには、退屈することができます。

バインディングのコレクションが大きい場合は、フリップビューを使用しないでください。リストビューまたはグリッドビューを検討してください。

+0

こんにちはSunteen呉、素晴らしい説明。 VirtualizingStackPanelをチェックするとき、あなたが言ったように3つの項目がありました。私は@Martin Zikmundからのデモを調べますが、これは私が望むものと思われます。ありがとう! –

+0

** @ Martin Zikmund **のデモと同様のロジックを使用した後も、以前のアイテムはキャッシュに保持され、奇妙な動作を引き起こします。以前のアイテムはキャッシュに保持されます。私はFlipViewの代わりにPivotを使ってみて、あなたに戻ってくると思う。助けてくれてありがとう。 –

関連する問題