我对三个地区有一个应用。区域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的viewmodel上成功实现了IConfirmNavigationRequest,但这仅控制区域B的导航。如果用户取消导航请求,则区域B正确保留为View1B,但View2C将加载到区域C.
有关如何确认两个地区的导航一次的任何建议?
答案 0 :(得分:1)
请求导航带有支持回调的重载:
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 );
}
}
这是基于我的代码片段,您必须稍微调整一下,例如不要使用您不使用的导航参数。