[C# - Prism] 프리즘 예제 19 - NavigationParticipationC#/Prism2023. 9. 13. 21:28
Table of Contents
안녕하세요, 반나무입니다.
이번 예제는 NavigationParticipation 예제입니다.
예제코드들을 보다보면 영어공부를 더 많이 하게 되는것 같습니다.
Participation = 참여
뜻을 직역하자면 네비게이션 참여.
코드를 보고, 예제를 확인해보면 단순히 Region을 Navigate하기보단 해당 Region에 직접 참여해 조작하는 모습을 볼 수 있습니다.
NavigationParticipation
CommandParameter를 통해 ViewA와 ViewB를 Region에 Navigate하는 부분이있습니다.
<DockPanel LastChildFill="True">
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Margin="5" >
<Button Command="{Binding NavigateCommand}" CommandParameter="ViewA" Margin="5">Navigate to View A</Button>
<Button Command="{Binding NavigateCommand}" CommandParameter="ViewB" Margin="5">Navigate to View B</Button>
</StackPanel>
<TabControl prism:RegionManager.RegionName="ContentRegion" Margin="5" />
</DockPanel>
private void Navigate(string navigatePath)
{
if (navigatePath != null)
_regionManager.RequestNavigate("ContentRegion", navigatePath);
}
ModuleA
ViewAViewModel.cs
앞선 예제와는 다르게 INavigationAware를 인터페이스로 받고있습니다.
INavigationAware는 대부분 Navigate된 View의 ViewModel에서 사용하며, Navigate들어올때, 나갈때 이벤트를 발생시켜 편하게 조작이 가능합니다.
public class ViewAViewModel : BindableBase, INavigationAware
{
...
private int _pageViews;
public int PageViews
{
get { return _pageViews; }
set { SetProperty(ref _pageViews, value); }
}
// Navigate될 때 실행된다.
public void OnNavigatedTo(NavigationContext navigationContext)
{
PageViews++;
}
// 해당 Navigation 인스턴스를 새로만들지, 기존 인스턴스를 사용할지 확인한다.
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
}
// Navigation에서 빠져나갈때 실행된다.
public void OnNavigatedFrom(NavigationContext navigationContext)
{
}
}
IsNavigationTarget을 false로 변경하면 인스턴스를 새로 만들게 됩니다.
ViewAViewModel을 false로 변경하니 해당 Navigate가 계속 생성되는 모습을 볼 수 있습니다.
반응형
'C# > Prism' 카테고리의 다른 글
[C# - Prism] 프리즘 예제 21 - PassingParameters (0) | 2023.09.20 |
---|---|
[C# - Prism] 프리즘 예제 20 - NavigateToExistingViews (0) | 2023.09.17 |
[C# - Prism] 프리즘 예제 18 - NavigationCallback (0) | 2023.09.04 |
[C# - Prism] 프리즘 예제 17- BasicRegionNavigation (0) | 2023.09.03 |
[C# - Prism] 프리즘 예제 16 - RegionContext (0) | 2023.09.02 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!