【问题标题】:Prism 6 RequestNavigate and ThreadPrincipal exceptionPrism 6 RequestNavigate 和 ThreadPrincipal 异常
【发布时间】:2017-05-16 13:56:02
【问题描述】:

使用棱镜 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));

同样的尝试,catch wrapper 被包裹起来:

try{
_regionManager.RequestNavigate(RegionNames.ContentRegion, new Uri(viewName, UriKind.Relative));
}
catch (SecurityException)
{

}

异常未被捕获。

问题: 如何捕捉异常?

【问题讨论】:

    标签: c# wpf thread-safety prism principal


    【解决方案1】:

    首先,不要在 ViewModel 中创建视图。这是一个很大的 MVVM “不可以”。使用 RequestNavigate 时,有一个回调,您可以使用有关导航操作的信息。它会告诉你导航操作是否失败以及失败时的错误信息。

    查看此示例:https://github.com/PrismLibrary/Prism-Samples-Wpf/tree/master/18-NavigationCallback

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多