2017-05-16 15 views
0

はThreadPrincipalで行われます。プリズム6 RequestNavigateとThreadPrincipal例外

try{ 
    View someView = new View(); 
    mainRegion.Add(someView , "viewName"); 
    mainRegion.Activate(someView); 
} 
catch (SecurityException) 
{ 

} 

とビューがあります:この方法では、ビューはViewModelにして作成されたときに動作します

[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")] 

RequestNavigateは、ビュー間を移動するので、もししかしViewModelにでビューを作成することをお勧めではありません使用されています:

_regionManager.RequestNavigate(RegionNames.ContentRegion, new Uri(viewName, UriKind.Relative)); 

と同じ試み、キャッチラッパーは周りにラップされている:

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

} 

例外は検出されません。

質問: 例外をキャッチするにはどうすればよいですか?

答えて

0

まず、ViewModelでビューを作成しないでください。これは大きなMVVM「No-no」です。 RequestNavigateを使用する場合は、ナビゲーションアクションに関する情報とともに使用できるコールバックがあります。ナビゲーション操作が失敗し、失敗したときに表示されたエラーメッセージが表示されます。

このサンプルを参照してください。https://github.com/PrismLibrary/Prism-Samples-Wpf/tree/master/18-NavigationCallback

関連する問題