2017-08-16 127 views
0

我遇到使用INavigationAware代碼的問題。我有3頁。例如,我將它命名爲pageA,pageB和pageC。網頁A是一個列表視圖,我將使用OnItemSelected如何使用INavigationAware將參數傳遞給上一頁返回按鈕

網頁A視圖模型

public void OnItemSelected(Complaint item) 
     { 
      if (item != null) 
      { 
       var param = new NavigationParameters(); 
       param.Add("id", item.Id); 
       mNavigationService.NavigateAsync("pageB", param); 
      } 
     } 

在頁面B的參數傳遞到頁面B,我會使用的OnNavigatedTo獲取參數。

網頁B視圖模型

public async void OnNavigatedTo(NavigationParameters parameters) 
     { 
      var id = parameters["id"]; 
      Title = string.Format("{0}: {1}", Strings.ComplaintDetail_Title, id); 
      await getComplaintDetail(Convert.ToInt32(id)); 

     } 

從頁面B,我會用同樣的方式將參數發送到pageC。但現在,我將參數傳遞迴pageB存在問題。由於我在左上方使用INavigation Back按鈕,因此我不知道如何將參數傳遞迴pageB。問題是我需要將參數(主鍵)傳遞給所有頁面以供選擇和更新。請幫幫我。我不知道如何使用OnNavigatedFrom傳遞參數。

PageC視圖模型

public void OnNavigatedFrom(NavigationParameters parameters) 
     { 

     } 

預先感謝您。

+0

您是否考慮過使用某項服務?如果所有頁面都必須知道當前項目,那麼「全局」提供它可能是將它全部傳遞的替代方案。 – Haukinger

+0

如何讓它成爲全球?對不起,我完全是一個新手。 – nuyuljana

+0

通過所有視圖模型提供的服務 – Haukinger

回答

1

我討厭說明明顯的,但你有沒有嘗試添加到OnNavigatedFrom方法的參數集合?

public void OnNavigatedFrom(NavigationParameters parameters) 
    { 
     parameters.Add("test", "testValue"); 
    } 
+0

非常感謝Brian。我的問題解決了。 – nuyuljana

+0

太好了。你應該回答這個問題。 –