[C# - Prism] 프리즘 예제 16 - RegionContextC#/Prism2023. 9. 2. 09:56
Table of Contents
안녕하세요, 반나무입니다.
이번 예제는 RegionContext입니다.
Context는 사전적인 정보로는 문맥, 맥락정도로 순화되지만 컴퓨터분야에서 쉽게 설명하면 현재 사용중인 오브젝트나 로직 정도로 생각해주시면 됩니다.
RegionContext예제는 Region에서 사용중인 DataContext를 어떻게 변경하는지 알아봅니다.
프로그램 구조
프로그램 구조는 다음과 같습니다.
- ModuleA : 실제 RegionContext가 동작 하는 부분
- RegionContext : Shell, ModuleA를 참조한다.
ModuleA
ModuleAModule.cs
각 View를 region에 추가합니다.
public class ModuleAModule : IModule
{
public void OnInitialized(IContainerProvider containerProvider)
{
var regionManager = containerProvider.Resolve<IRegionManager>();
regionManager.RegisterViewWithRegion("ContentRegion", typeof(PersonList));
regionManager.RegisterViewWithRegion("PersonDetailsRegion", typeof(PersonDetail));
}
public void RegisterTypes(IContainerRegistry containerRegistry){}
}
PersonList.xaml
<Grid x:Name="LayoutRoot" Background="White" Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ListBox x:Name="_listOfPeople" ItemsSource="{Binding People}"/>
<ContentControl Grid.Row="1" Margin="10"
prism:RegionManager.RegionName="PersonDetailsRegion"
prism:RegionManager.RegionContext="{Binding SelectedItem, ElementName=_listOfPeople}"/>
</Grid>
PersonListViewModel.cs
private ObservableCollection<Person> _people;
public ObservableCollection<Person> People
{
get { return _people; }
set { SetProperty(ref _people, value); }
}
ListBox에서는 People ObservableCollection를 ItemsSource로 받고있습니다.
ContentControl을 PersonDetailsRegion으로 설정 한 후 해당 RegionContext를 ListBox인 _listofPeople의 SelectedItem으로 지정합니다.
선택된 SelectedItem은 Person자료형이기 때문에 PersionDetailViewModel에서 Context로 받게됩니다.
변경된 Context로 PersonDetail에서 출력합니다.
반응형
'C# > Prism' 카테고리의 다른 글
[C# - Prism] 프리즘 예제 18 - NavigationCallback (0) | 2023.09.04 |
---|---|
[C# - Prism] 프리즘 예제 17- BasicRegionNavigation (0) | 2023.09.03 |
[C# - Prism] 프리즘 예제 15 - FilteringEvent (0) | 2023.08.27 |
[C# - Prism] 프리즘 예제 14 - UsingEventAggregator (0) | 2023.08.14 |
[C# - Prism] 프리즘 예제 13 - IActiveAwareCommands (0) | 2023.08.08 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!