-
[Prism] 시작하기C#/Prism 2022. 11. 23. 17:18
목차
1.Prism Template Pack으로 시작하기
Prism Template Pack 설치
Module 등록
프로젝트 모듈 추가
Dependencies에 Project Module 추가 후
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) { moduleCatalog.AddModule<ModuleAModule>(); moduleCatalog.AddModule<ModuleBModule>(); }
위 override 함수에 추가 할 모듈 추가
View Discovery방식
위 표시영역은 View Discovery방식
즉시 표시되는 아이템(View)에 대해서만 View Discovery방식을 사용.
- Views can be created and displayed in regions automatically
Ex) 메뉴아이템, 상태표시줄.. etc
View Navigation방식 (View Injection)
- Views can be created and displayed in regions programmatically
View를 등록
Command에서 받은 Parameter값을 참조해서 view를 불러옴.
# ModuleA 의 View에서 ModuleB의 View 호출 가능.
EX)
ModuleB 또한 App.xaml.cs에 등록 후
ModuleA의 ViewModel에서 Command명령의 Parameter로 ModuleB의 View이름을 호출.
Navigation 이벤트
INavigationAware 상속
관련 인터페이스
Navigation간에 이동할때 진입점 및 탈출점에 이벤트 함수 정의가능.
Command에서 Navigation View요청시 parameter값 전달 가능.
key 값이 id 인 Value Get
IEventAggregator
eventAggregator가 작동하려면 publisher와 subscriber가 필요.
MainWindow viewModel에서 MessageEvent publish
ModuleA 의 ViewBViewmodel에서 MessageEvent Subscribe
CanExecuteCommand
# ObservesCanExecute()사용 추천.
2.Prism Nuget Package 설치로 시작하기
Prism.Core
Prism.DryIoc
Prism.Wpf
위 3개 패키지 설치
StartupUri="MainWindow.xaml" 삭제 및 위 강조 표시로 추가 AND 변경
위 강조표시 추가 및 변경.
위 강조 표시 추가
protected override void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.RegisterForNavigation<MainWindow, MainWindowViewModel>(); }
위 등록해줘야 MainWindow 랑 MainWindowViewModel 자동 묶기가능. ( View, ViewModel 등록)
모듈 추가
Class1.cs => ModuleAModule 이름 변경
인터페이스 추가
Views
ViewModels
IRegionManager 등 추가
xmlns:prism="http://prismlibrary.com/" prism:ViewModelLocator.AutoWireViewModel="True"
View에 추가 ViewModel 자동 묶기
View , ViewModel 등록
ModuleA 등록
프리즘 라이브러리
https://github.com/PrismLibrary
https://kaki104.tistory.com/854
https://prismlibrary.com/docs/wpf/legacy/Modules.html
https://wiki.bananeatomic.fr/wiki/Prism_8#App.config
728x90'C# > Prism' 카테고리의 다른 글
[Prism] <Control> ContentRegion (0) 2023.02.01 [Prism] Call Moule Class (0) 2023.02.01 [Prism] CompositeCommand (0) 2023.01.18 [Prism] Dialog (0) 2023.01.06 [Prism] Dynamic loading Modules (0) 2023.01.04 댓글