使用EventHandler
和ScrollIntoView(Object)
方法,您可以在不使用ViewMovel內部視圖的引用並且尊重MVVM模式的情況下實現自己想要的功能。
在您的視圖模型像這樣創建一個事件:
public event EventHandler ScrollListView;
在您的視圖中添加一個回調滾動ListView
當屬性更新:
ViewModel vm;
vm.ScrollListView += (sender, e) =>
{
var specificItem = **some item**;
MyListView.SelectedItem = specificItem;
MyListView.UpdateLayout();
MyListView.ScrollIntoView(MyListView.SelectedItem);
};
然後在您的視圖模型,當你更新該財產,並希望滾動ListView
:
if (this.ScrollListView != null)
{
this.ScrollListView(this, EventArgs.Empty);
}
這就是我通常對每種情況做一些調整的過程。