2011-02-09 66 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

相關問題