Silverlight 视图如何取消PRISM中的导航请求?

Silverlight 视图如何取消PRISM中的导航请求?,silverlight,silverlight-4.0,prism,Silverlight,Silverlight 4.0,Prism,我有一个实现INavigationAware接口的视图。 此接口具有OnNavigationFrom方法,即根据MSDN 当实现者被导航离开时调用 现在,我要确保用户没有留下任何未保存的更改,如果有未保存的更改,请询问用户是否要保存这些更改。此时,我需要能够以某种方式取消导航请求,以防用户想留下来继续编辑 MSDN上关于INavigationAware接口的文档没有说明该接口应该如何使用 我可能是大错特错了,没有办法取消它,或者这个界面不适合这样做 无论如何,如果有人告诉我如何让用户留下并继续编

我有一个实现INavigationAware接口的视图。 此接口具有OnNavigationFrom方法,即根据MSDN

当实现者被导航离开时调用

现在,我要确保用户没有留下任何未保存的更改,如果有未保存的更改,请询问用户是否要保存这些更改。此时,我需要能够以某种方式取消导航请求,以防用户想留下来继续编辑

MSDN上关于INavigationAware接口的文档没有说明该接口应该如何使用

我可能是大错特错了,没有办法取消它,或者这个界面不适合这样做


无论如何,如果有人告诉我如何让用户留下并继续编辑一个已启动的导航请求,我将不胜感激。

请查看此链接:

作为替代方案,如果您使用RegionManager,也许可以尝试在RegionManager.RequestNavigate()方法周围放置一些布尔逻辑。大概是这样的:

if(isDirty)
{
    RegionManager.RequestNavigate(RegionConstants.ShellMainRegion, new Uri(typeof(YourView).Name, UriKind.Relative));
}
else
{
// Don't navigate
}

最后一个想法。如果您使用的是EventAggregator,那么您可以发布导航事件并做出相应的响应。

我发现还有另一个界面可以实现此功能:“它继承了INavigationAware。它具有ConfirmNavigationRequest方法,该方法接受带有布尔参数的回调。如果我想取消导航请求,我用false调用该回调,如果我想留下,我用true调用它:

continuationCallback(MessageBox.Show("Discard changes?", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
问题解决了。谢谢你的关注