【问题标题】:How do I control the scroll position of a ListView in an MVVM WinRT/XAML Windows Store app?如何控制 MVVM WinRT/XAML Windows Store 应用程序中 ListView 的滚动位置?
【发布时间】:2013-02-27 07:20:41
【问题描述】:

这与How to control the scroll position of a ListBox in a MVVM WPF app 中提出的问题类似,但相反,我试图在 Windows 应用商店应用程序中实现类似的效果:我想知道如何将 ListView 滚动到当前MVVM 风格应用中视图模型中的(或任意)项目。

与 WPF 相比,WinRT 存在一些限制:

  • ListView 或相关类不支持 IsSynchronizedWithCurrentItem 属性(该属性存在,但使用它会引发运行时异常,表明当前不受支持);
  • 仅部分支持ICollectionViewCollectionViewSource 和其他相关类型。

幸运的是,Bernardo Castilho 在 CodeProject (http://www.codeproject.com/Articles/527686/A-WinRT-CollectionView-class-with-Filtering-and-So) 的解决方案优雅地解决了 CollectionViewSource 问题。不幸的是,缺乏对IsSynchronizedWithCurrentItem 的支持使得解决问题的其余部分变得很棘手。

已经有几个类似的问题(例如Windows 8 Metro style ListView auto scroll),但它们没有从 MVVM 的角度解决问题,也不允许我在项目中使用最少的代码隐藏来维护干净的 MVVM 架构。

【问题讨论】:

    标签: c# mvvm windows-runtime windows-store-apps winrt-xaml


    【解决方案1】:

    您可以从 WinRT XAML 工具包中检查ListViewExtensions.ItemToBringIntoView 附加属性,该属性的工作方式应该与您绑定SelectedItem 属性的方式类似,但它会改为显示一个项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      相关资源
      最近更新 更多