PRISM과 함께 작업하고 올바르게 사용하는 방법을 배우려고합니다. 에서 ViewA, ViewB PRISM으로 이동할 때 자신의 RegionAdapter에서보기 가져 오기
을 (DockManager :
- MainWindow를 : 이것은 탐색을 위해이 개 버튼을 포함하는 내 쉘입니다 지금까지 나는 3 뷰를 생성 SyncFusion)을 사용하여 뷰를 삽입합니다.
_regionManager.RequestNavigate("ContentRegion", uri);
보기는 부트 스트 래퍼
Container.RegisterTypeForNavigation<ViewA>("ViewA"); Container.RegisterTypeForNavigation<ViewB>("ViewB");
내부에 등록 된 내 영역을 호스트하는 간단한을 TabControl을 사용하는 경우이 잘 작동 : 셸의 뷰 모델 내부 내가 이동하는 DelegateCommand를 사용합니다. SyncFusion 툴킷에서 DockManager를 사용하려면 내가 어댑터를 생성하고 함수 재정의 :
protected override void Adapt(IRegion region, DockingManager regionTarget) { region.Views.CollectionChanged += delegate { foreach (var child in region.Views.Cast<UserControl>()) { if (!regionTarget.Children.Contains(child)) { regionTarget.BeginInit(); regionTarget.Children.Add(child); regionTarget.EndInit(); } } }; regionTarget.WindowClosing += delegate (object sender, WindowClosingEventArgs args) { var child = args.TargetItem as UserControl; region.Remove(child); }; regionTarget.CloseButtonClick += delegate (object sender, CloseButtonEventArgs args) { var child = args.TargetItem as UserControl; region.Remove(child); }; region.NavigationService.Navigated += RegionTarget_Navigated; } private void RegionTarget_Navigated(object sender, RegionNavigationEventArgs e) { }
는 내가 지금 처리하려고하는 것은보기가 이미 내 DockingManager에 포함되어있는로 탐색하는 경우입니다. 이 경우 뷰는 활성으로 설정되어야합니다. 이를 달성하기 위해 지역의 'Navigated'이벤트에 가입하려했습니다. 이것이 올바른 방법일까요? Navigation-URI에서 올바른보기를 얻으려면 어떻게해야합니까? 또는 (INavigationAware의 OnNavigatedTo를 사용하여) 내 viewmodels에서 해당 시나리오를 처리해야합니까?