使用Prism 6
每当授予用户查看某些视图的验证都是通过ThreadPrincipal完成的。在viewModel中创建视图时,此方法有效:
try{
View someView = new View ();
mainRegion.Add(someView , "viewName");
mainRegion.Activate(someView );
}
catch (SecurityException)
{
}
视图有:
[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
但是,在viewModel中创建视图不是一个好习惯,因此如果使用RequestNavigate在视图之间导航:
_regionManager.RequestNavigate(RegionNames.ContentRegion, new Uri(viewName, UriKind.Relative));
同样的尝试,抓住包裹物缠绕着:
try{
_regionManager.RequestNavigate(RegionNames.ContentRegion, new Uri(viewName, UriKind.Relative));
}
catch (SecurityException)
{
}
没有抓住异常。
问题: 如何捕获异常?
答案 0 :(得分:0)
首先,不要在ViewModel中创建视图。这是一个伟大的MVVM“禁忌”。使用RequestNavigate时,您可以使用回调来获取有关导航操作的信息。它会告诉您导航操作失败以及失败时的错误消息。
请参阅此示例:https://github.com/PrismLibrary/Prism-Samples-Wpf/tree/master/18-NavigationCallback