在构造函数中导航
Navigation in constructor
我有一个应用程序,在任何过程中都有可能发生错误。
用户必须经过几个步骤,一个接一个(表格的顺序是严格固定的)。
我遇到的问题是,当我在我的构造函数中看到发生了一些错误时,我想立即导航到一个特殊页面,在那里我向用户显示所有错误消息。
示例:用户单击了下一步按钮,这应该将他带到 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
.
我错过了什么?
最后,我通过实施 INavigationAware
并将我的错误逻辑从构造函数移至此处
设法解决了问题
public void OnNavigatedTo(NavigationContext navigationContext)
{
//check for error messages
if (_errorRepository.ContainsErrorMessage())
_navigationService.RequestNavigate("ContentRegion", App.Experiences.ErrorPage.ToString());
}
我有一个应用程序,在任何过程中都有可能发生错误。
用户必须经过几个步骤,一个接一个(表格的顺序是严格固定的)。
我遇到的问题是,当我在我的构造函数中看到发生了一些错误时,我想立即导航到一个特殊页面,在那里我向用户显示所有错误消息。
示例:用户单击了下一步按钮,这应该将他带到 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
.
我错过了什么?
最后,我通过实施 INavigationAware
并将我的错误逻辑从构造函数移至此处
public void OnNavigatedTo(NavigationContext navigationContext)
{
//check for error messages
if (_errorRepository.ContainsErrorMessage())
_navigationService.RequestNavigate("ContentRegion", App.Experiences.ErrorPage.ToString());
}