【问题标题】:Navigation in constructor构造函数中的导航
【发布时间】:2016-01-08 18:42:19
【问题描述】:

我有一个应用程序,在任何过程中都有可能发生错误。

用户必须经过几个步骤,一个接一个(表单的顺序是严格固定的)。

我遇到的问题是,当我在构造函数中看到发生了一些错误时,我想立即导航到一个特殊页面,在那里我向用户显示所有错误消息。

示例:用户单击“下一步”按钮,这应该将他带到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

我错过了什么?

【问题讨论】:

  • 抱歉耽搁了,我的目标是 WPF,但我已经设法解决了这个问题。谢谢!

标签: c# wpf navigation prism


【解决方案1】:

最后我设法通过实现INavigationAware 解决了这个问题,并将我的错误逻辑从构造函数移到这里

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

【讨论】:

    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多