WPF Prism 确认多个区域的导航请求

标签 wpf prism region-management

我有一个包含三个区域的应用程序。区域 A 是一个导航区域,用于保存应用程序中模块的导航项。区域 B 和 C 是模块的内容区域。我还有两个模块 Module1 和 Module2,每个模块都有一个导航项控件加载到区域 A。 区域 A 包含 NavigationItemMod1Control 和 NavigationItemMod2Control。

NavigationItemMod1Control 绑定(bind)到将 view1B 加载到区域 B 并将 view1C 加载到区域 C 的命令(NavigationItemMod2Control 具有类似的命令)。命令执行方法如下所示:

public void Execute(object parameter)
 {
        // Show View 1B
        var view1BUri = new  Uri(Module1RegionNames.ViewBControl, UriKind.Relative);
        regionManager.RequestNavigate(RegionNames.ViewBArea, view1BUri );

        // Show View 1C
        var view1CUri = new Uri(Module1RegionNames.ViewCControl, UriKind.Relative);
        regionManager.RequestNavigate(RegionNames.ViewCArea, view1CUri );
}

当我单击 NavigationItemMod2Control 时,我想在将 View 2B 或 View 2C 加载到相应区域之前确认导航。

我已经在模块 1 的 View1B 的 View 模型上成功实现了 IConfirmNavigationRequest,但这只控制区域 B 的导航。如果用户取消导航请求,区域 B 正确地保持为 View1B,但 View2C 被加载到区域 C。

关于如何为两个区域确认一次导航有什么建议吗?

最佳答案

请求导航带有支持回调的重载:

var navigationParameters = new NavigationParameters();
                    navigationParameters.Add("RelatieId", _CurrentRelatie.RelatieId);
regionManager.RequestNavigate("RelatieDetailRegion",
                        new Uri("RelatieDetail", UriKind.Relative), NavigationCallback, navigationParameters);

void NavigationCallback(NavigationResult nr)
    {
        _logger.Log("NavigationCallback", Category.Info, Priority.Medium);
        if (nr.Result.Value == true)
        {

             //navigate region C, so this is your code
             var view1CUri = new Uri(Module1RegionNames.ViewCControl, UriKind.Relative);
             regionManager.RequestNavigate(RegionNames.ViewCArea, view1CUri );
        }
    }

这是基于我的一个代码片段,你必须稍微调整一下,例如不要使用你不使用的导航参数。

关于WPF Prism 确认多个区域的导航请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28545832/

相关文章:

C#/Xamarin : Appearing/Disappearing events don't fire

silverlight - MEF/PRISM 银光

c# - 在修改 C# WPF 应用程序中的绑定(bind)属性之前,如何确保我与 UI 同步以基于绑定(bind)更改样式?

.net - 设置ListView ItemTemplate并获取ObservableCollection相关对象

c# - 在 DataGrid 中修剪文本时的自动工具提示

ios - didEnterRegion 在前台工作但不在后台或其他 VC

wpf - 测试 Controller 上部署的文件丢失 (TFS 2013)

c# - 如何使用 MVVM 从 ViewModel 显示 View 并在 WPF 中设置该 View 的数据上下文

silverlight - 多外壳应用程序?