2016-01-08 77 views
2

我有一個應用程序,在任何過程中都有可能發生錯誤。在構造函數中導航

用戶必須經過幾個步驟,其中一個接一個接一個(表單的順序是嚴格固定的)。

我的問題是,當我在構造函數中看到發生了一些錯誤時,我想立即導航到一個特殊頁面,在那裏向用戶顯示所有錯誤消息。

示例:用戶單擊按鈕Next,應該將他帶到Page2,但是在該構造函數Page2ViewModel中,程序遇到了幾個錯誤。因此,我不想向用戶顯示Page2(他根本無法使用該頁面),我想立即導航到構造函數中的特殊頁面。

這裏是我的構造看起來像:

public DetailPageViewModel(IDataRepository DataRepository, 
    IRegionManager regionManager, 
    IMainCompanyRepository companyRepository, 
    IBankTransactionsRepository bankTransactionsRepository, 
    IBankRepository bankRepository, 
    IRegionManager navigationService, 
    IErrorRepository errorRepository) 
{ 
    _DataRepository = DataRepository; 
    _regionManager = regionManager; 
    _companyRepository = companyRepository; 
    _bankTransactionsRepository = bankTransactionsRepository; 
    _bankRepository = bankRepository; 
    _navigationService = navigationService; 
    _errorRepository = errorRepository; 

    InitializeCommands(); 

    //Here is where error can occur 
    InitializeValues(); 


    if (errorRepository.ContainsErrorMessage()) 
     _navigationService.RequestNavigate("ContentRegion", App.Experiences.ErrorPage.ToString()); 
} 

當我切換在我的ErrorPageViewModel我可以清楚地看到一個斷點,即構造函數初始化,但由於未知原因,(對我來說)它仍然顯示Page2

我錯過了什麼?

+0

抱歉耽擱,我瞄準WPF來解決這個問題,但我已經設法解決問題。謝謝! –

回答

0

最後,我設法通過實施INavigationAware,並從構造移動我的錯誤邏輯到這裏

public void OnNavigatedTo(NavigationContext navigationContext) 
    { 
     //check for error messages 
     if (_errorRepository.ContainsErrorMessage()) 
      _navigationService.RequestNavigate("ContentRegion", App.Experiences.ErrorPage.ToString()); 
    } 
相關問題