c# - 在构造函数中导航

标签 c# wpf navigation prism

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

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

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

示例:用户点击了下一步按钮,这本应将他带到 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());
    }

关于c# - 在构造函数中导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34683914/

相关文章:

c# - ASP.NET 和 C# 重定向

c# - 打开Outlook后无法创建带有Outlook Interop的电子邮件

wpf - 如何从代码隐藏中访问控件模板的元素

c# - WPF ItemsControl 和 WrapPanel 走进酒吧

android - 更改 Android 上 Activity 动画的 z 顺序

c# - 函数/方法的合适名称

c# - 键值对的有序列表?

jquery - 响应式导航菜单 CSS 可能取代 Jquery

android - 如何使用 ListView 和 ViewFlipper 在 Android 应用程序中导航用户?

c# - 在路径中使用 "~"解析为 C :\