[C# - Prism] 프리즘 예제 21 - PassingParametersC#/Prism2023. 9. 20. 23:56
Table of Contents
안녕하세요, 반나무입니다.
이번예제는 Navigation을 사용 할 때 파라미터를 넘겨주는 예제입니다.
처음에는 아무것도 없다가, item들을 선택 할 때마다 하단의 TabControl에 View들이 추가되는것을 확인 할 수 있습니다.
PersonListViewModel.cs
파라미터를 넘겨주기위해서는 아무 타입이나 넘길 수 없으며,
NavigationParameters 클래스를 만들고 해당 클래스 내부의 Dictionary 타입에 값을 Add해야합니다.
private void PersonSelected(Person person)
{
var parameters = new NavigationParameters();
parameters.Add("person", person);
if (person != null)
_regionManager.RequestNavigate("PersonDetailsRegion", "PersonDetail", parameters);
}
PersonDetailViewModel.cs
파라미터를 등록하면 PersonDetailViewModel에 OnNavigatedTo()에 navigationContext로 들어오게 됩니다.
public void OnNavigatedTo(NavigationContext navigationContext)
{
var person = navigationContext.Parameters["person"] as Person;
if (person != null)
SelectedPerson = person;
}
등록한 Key값으로 Value를 찾아 원했던 타입으로 변환하면 객체를 얻을 수 있습니다.
IsNavigationTarget은 기존의 View를 사용할지 신규 View를 사용할지 확인하는데,
아래 코드는 파라미터로 받은 객체와 LastName이 동일하면 기존 View를 사용하기 때문에
예제에서 다른 Item을 선택 후 원래 Item을 선택하면 기존 View로 돌아오게됩니다.
public bool IsNavigationTarget(NavigationContext navigationContext)
{
var person = navigationContext.Parameters["person"] as Person;
if (person != null)
return SelectedPerson != null && SelectedPerson.LastName == person.LastName;
else
return true;
}
반응형
'C# > Prism' 카테고리의 다른 글
[C# - Prism] 프리즘 예제 23 - RegionMemberLifetime (0) | 2024.05.29 |
---|---|
[C# - Prism] 프리즘 예제 22 - ConfirmCancelNavigation (0) | 2023.09.23 |
[C# - Prism] 프리즘 예제 20 - NavigateToExistingViews (0) | 2023.09.17 |
[C# - Prism] 프리즘 예제 19 - NavigationParticipation (0) | 2023.09.13 |
[C# - Prism] 프리즘 예제 18 - NavigationCallback (0) | 2023.09.04 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!