1

これは、MVVM WPFアプリでリストボックスのスクロール位置を制御する方法で提起された質問と同様の質問ですが、代わりに、Windowsストアアプリ内から同様の効果を達成しようとしています。ListViewMVVMスタイルのアプリのビューモデルから現在の(または任意の)アイテムにスクロールします。

WPFと比較した場合、WinRTにはいくつかの制限があります。

  • IsSynchronizedWithCurrentItemプロパティは、または関連するクラスではサポートされていません(ListViewプロパティは存在しますが、プロパティを使用すると、現在サポートされていないことを示すランタイム例外がスローされます)。
  • ICollectionViewCollectionViewSourceおよびその他の関連するタイプは部分的にしかサポートされていません。

幸い、このCollectionViewSource問題は、CodeProject(http://www.codeproject.com/Articles/527686/A-WinRT-CollectionView-class-with-Filtering-and-So)のBernardoCastilhoのソリューションによってエレガントに解決されています。残念ながら、サポートが不足してIsSynchronizedWithCurrentItemいるため、残りの問題を解決するのは困難です。

すでにいくつかの同様の質問があります(たとえば、Windows 8 MetroスタイルのListView自動スクロール)が、MVVMの観点からは問題に対処しておらず、プロジェクトで最小限のコードビハインドでクリーンなMVVMアーキテクチャを維持することはできません。

4

1 に答える 1

1

WinRT XAML Toolkit から添付プロパティを確認できます。これは、プロパティListViewExtensions.ItemToBringIntoViewをバインドする方法と同様に機能するはずですが、SelectedItem代わりに項目が表示されます。

于 2013-02-27T17:33:05.310 に答える