저는 WPF 응용 프로그램을 작성 중이며 Prism과 Unity을 사용하여 화면에서 화면으로 이동합니다. 내가 가진 문제는 내 스크린이 다른 지역 레이아웃을 가지고 있다는 것입니다.Prism and Unity를 사용하여 다른 지역 레이아웃으로 이동하는 방법은 무엇입니까?
예를 들어 (이미지를 참조하십시오), 첫 번째 화면에는 2 개의 영역 (영역 1과 영역 2)이 있으며 사용자가 버튼을 클릭하면 1 개의 영역 (영역 3) 만있는 두 번째 화면으로 이동합니다.
나는 작동하지 않습니다. 또한 region 2를 숨기고 region 2에 제 2 화면을 주입하려고했습니다. region 2는 숨기지 만 축소하지는 않습니다. 그래서 오른쪽에 커다란 공백이 있습니다.
이 부분은 Shell.xaml 파일에 영역이 있음을 나타내는 article이 스택 오버플로에서 발견되었으며 다중 영역 레이아웃을 표시 할 다른 영역을 만듭니다.
<ContentControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.ShellMainRegion}" />
을 그리고 나는 IModule 인터페이스를 구현하는 클래스의 초기화 방법에 지역, 뷰 모델과 뷰를 등록 :
그래서 내 Shell.xaml 파일은 다음과 같습니다.
_container.RegisterType<IRegion1And2ViewModel, Region1And2ViewModel>();
_container.RegisterType<IRegion1And2View, Region1And2View>();
_container.RegisterType<IRegion1ViewModel, Region1ViewModel>();
_container.RegisterType<IRegion1View, Region1View>();
_container.RegisterType<IRegion2ViewModel, Region2ViewModel>();
_container.RegisterType<IRegion2View, Region2View>();
_container.RegisterType<IRegion3ViewModel, Region3ViewModel>();
_container.RegisterType<IRegion3View, Region3View>();
IRegion shellMainRegion = _regionManager.Regions[RegionNames.ShellMainRegion];
var region1And2VM = _container.Resolve<IRegion1And2ViewModel>();
IRegionManager region1And2RegionManager = shellMainRegion.Add(region1And2VM.View);
IRegion region1 = region1And2RegionManager.Regions[RegionNames.Region1];
IRegion region2 = region1And2RegionManager.Regions[RegionNames.Region2];
var region1VM = _container.Resolve<IRegion1ViewModel>();
var region2VM = _container.Resolve<IRegion2ViewModel>();
region1.Add(region1VM.View);
region2.Add(region2VM.View);
region1.Activate(region1VM.View);
var region3VM = _container.Resolve<IRegion3ViewModel>();
shellMainRegion.Add(region3VM.View);
앱을 실행하면 첫 번째 화면이 잘 보입니다 (지역 1 및 2 사용). 그러나 단추를 클릭하고 다음 코드를 호출하면 영역 1 및 2 레이아웃이 남아 영역 1보기가 더 이상 표시되지 않고 영역 3보기 (셸 주 영역에 표시되어야 함)가 표시되지 않습니다. 모든.
IRegion shellMainRegion = _regionManager.Regions[RegionNames.ShellMainRegion];
shellMainRegion.RequestNavigate(typeof(Region3View).Name);
프리즘 및 유니티를 사용하여 다른 영역 레이아웃으로 화면을 표시하는 데 필요한 코드를 누군가에게 보여줄 수 있습니까?
당신이 정말이 시간에 6.3 프리즘의 최신 버전을 사용해야합니다, 당신에게