[C# - Prism] 프리즘 예제 03 - CustomRegionsC#/Prism2023. 7. 16. 17:19
Table of Contents
안녕하세요, 반나무입니다.
이번 예제는 단순히 빌드만 해서는 결과가 보이지않아 프로젝트를 따로 만들어 확인했습니다.
StackPanel이나 Grid같은 다른 Control에서 Region을 사용가능하게 하는 예제입니다.
먼저 Prism에서 RegionAdapter는 4가지가 있습니다.
- ContentControlRegionAdapter
- SelectorRegionAdapter
- ItemsControlRegionAdapter
- TabControlRegionAdapter(Sliverlight만 해당)
예제에서는 StackPanelRegionAdapter를 새로 구현했으며,
해당 StackPanel에 Module를 Add하면 StackPanel디자인에 맞게 연결되어 들어갑니다.
// App.xaml.cs
protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings regionAdapterMappings)
{
base.ConfigureRegionAdapterMappings(regionAdapterMappings);
// StackPanel타입으로 RegionAdapter를 맵핑한다.
regionAdapterMappings.RegisterMapping(typeof(StackPanel), Container.Resolve<StackPanelRegionAdapter>());
}
CreateRegion
CreateRegion에서는 해당 Region을 어떻게 생성할지에대한 방법을 선택하는것 같습니다.
이것저것 확인해봤는데도 잘 모르겠습니다. ㅠㅠ 아시는 분 댓글부탁드립니다.
참조한 블로그에서는 두가지 방법이 있다고 합니다.
- AllActiveRegion : 모든 View에 대한 정보가 필요 할 때
- SingleActiveRegion : View가 한 개 일 때
해당 예제는 StackPanel을 사용하기 때문에 모든 View에 대한 정보가 필요해 AllActiveRegion을 사용합니다.
// StackPanelRegionAdapter.cs
protected override IRegion CreateRegion()
{
return new AllActiveRegion();
}
작동 테스트
임의로 2개의 모듈을 만들어 해당 Region에 붙여보면 아래와 같은 결과가 나옵니다.
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
base.ConfigureModuleCatalog(moduleCatalog);
moduleCatalog.AddModule<ModuleAModule>();
moduleCatalog.AddModule<ModuleBModule>();
}
같은 모듈 붙이기
ModuleA를 여러번 Add하면 예외가 발생합니다.
아마 다른 방법이 있을것 같은데 아직은 잘 모르겠네요
참고 사이트
반응형
'C# > Prism' 카테고리의 다른 글
[C# - Prism] 프리즘 예제 05 - ViewInjection (0) | 2023.07.19 |
---|---|
[C# - Prism] 프리즘 예제 04 - ViewDiscovery (0) | 2023.07.16 |
[C# - Prism] 프리즘 예제 02 - Regions (0) | 2023.07.16 |
[C# - Prism] 프리즘 예제 01 - BootStrapperShell (0) | 2023.07.16 |
[C#] Prism 정리 (0) | 2023.07.16 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!