使用EventHandler
andScrollIntoView(Object)
方法,您可以在不使用 ViewMovel 中的 View 引用并尊重 MVVM 模式的情况下实现您想要的。
在您的 ViewModel 中创建一个事件,如下所示:
public event EventHandler ScrollListView;
ListView
在您的视图中添加一个回调以在属性更新时滚动:
ViewModel vm;
vm.ScrollListView += (sender, e) =>
{
var specificItem = **some item**;
MyListView.SelectedItem = specificItem;
MyListView.UpdateLayout();
MyListView.ScrollIntoView(MyListView.SelectedItem);
};
然后在您的 ViewModel 中,当您更新该属性并想要滚动时ListView
:
if (this.ScrollListView != null)
{
this.ScrollListView(this, EventArgs.Empty);
}
当然,这就是我通常对每种情况进行一些调整的方式。