WPF 棱镜确认多个区域的导航请求
WPF Prism Confirm Navigation Request for Multiple Regions
我有一个包含三个区域的应用程序。区域 A 是一个导航区域,用于保存应用程序中模块的导航项。区域 B 和 C 是模块的内容区域。我还有两个模块 Module1 和 Module2,每个模块都有一个导航项控件加载到区域 A。
区域 A 包含 NavigationItemMod1Control 和 NavigationItemMod2Control。
NavigationItemMod1Control 绑定到将 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 时,我想在将视图 2B 或视图 2C 加载到相应区域之前确认导航。
我已经在模块 1 的 View1B 的视图模型上成功实现了 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 );
}
}
这是基于我的一个代码片段,您需要稍微调整一下,例如不使用您不使用的导航参数。
我有一个包含三个区域的应用程序。区域 A 是一个导航区域,用于保存应用程序中模块的导航项。区域 B 和 C 是模块的内容区域。我还有两个模块 Module1 和 Module2,每个模块都有一个导航项控件加载到区域 A。 区域 A 包含 NavigationItemMod1Control 和 NavigationItemMod2Control。
NavigationItemMod1Control 绑定到将 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 时,我想在将视图 2B 或视图 2C 加载到相应区域之前确认导航。
我已经在模块 1 的 View1B 的视图模型上成功实现了 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 );
}
}
这是基于我的一个代码片段,您需要稍微调整一下,例如不使用您不使用的导航参数。