2011-02-09 70 views
3

使用手机上的后退按钮进行导航时,如何刷新ViewModel?如何在使用MVVM进行导航时刷新ViewModel

我在手机上使用后退按钮,但我相信它与调用NavigationService.GoBack()相同,后者导航到堆栈中的上一页,但构造函数未在我的View或ViewModel中调用。

回答

6

你可以在OnNavigatingTo事件中挂钩一个基本的Page类,并在你的ViewModel上调用一个方法。我没有VS与我,但伪代码将是:

在MyBasePAge:页

public void OnNavigatingTo(object sender, eventargs e) 
{ 
    var vm = this.DataContext as BaseViewModel; 
    if(vm != null) 
    { 
     vm.Initialize(); 
    } 
} 

你可以离开页面之前做同样的:

public void OnNavigatingFrom(object sender, eventargs e) 
{ 
    var vm = this.DataContext as BaseViewModel; 
    if(vm != null) 
    { 
     vm.Save(); 
    } 
} 
+0

我在那里添加一个_Loaded标志,以防止它在初始页面加载时调用Initialize。似乎工作,谢谢。也许我应该将其称为Refresh()而不是Initialize() – Tyler 2011-02-10 00:51:22

相关问题