[C# - Prism] 프리즘 예제 23 - RegionMemberLifetimeC#/Prism2024. 5. 29. 21:15
Table of Contents
안녕하세요, 반나무입니다.
이번 예제는 RegionMember(view)의 Lifetime을 살펴보는 예제입니다.
Region은 View를 다양하게 가질 수 있습니다.
IRegionMemberLifetime.KeepAlive를 통해 Region에서 View가 변경될 시
해당 View 인스턴스를 유지 할 지 말지 선택 할 수 있습니다.
- KeepAlive = false : 인스턴스 Dispose
- KeepAlive = true : 인스턴스 유지
public class ViewAViewModel : BindableBase, INavigationAware, IRegionMemberLifetime
{
public ViewAViewModel() { }
public bool KeepAlive { get => false; }
}
다만, 확인해보니 해당 기능을 사용하고자 하면 인터페이스뿐만아니라.
regionManager를 담당하고 있는 Class에서 Region, View의 CollectionChanged Event를 받아 직접 처리를 해야합니다.
// Region Collection Changed 이벤트 구독
public MainWindowViewModel(IRegionManager regionManager)
{
_regionManager = regionManager;
_regionManager.Regions.CollectionChanged += Regions_CollectionChanged;
}
// Region Collection Changed시 Views.CollectionChanged 이벤트 구독
private void Regions_CollectionChanged(ojbect sender, NotifyCollectionChangedEventArgs e)
{
if(e.Action == NotifyCollectionChangedAction.Add)
{
var region = (IRegion)e.NewItems[0];
region.Views.CollectionChanged += Views_CollectionChanged;
}
}
// View Collection Changed시 메소드 실행
private void View_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if(e.Action == NotifyCollectionChangedAction.Add)
{
Views.Add(e.NewItems[0].GetType().Name;
}
else if(e.Action == NotifyCollectionChangedAction.Remove)
{
Views.Remove(e.OldItems[0].GetType().Name);
}
}
View인스턴스를 유지하고싶지 않다면 해당 인터페이스를 사용해보는것도 좋아 보입니다.
반응형
'C# > Prism' 카테고리의 다른 글
[C# - Prism] 프리즘 예제 22 - ConfirmCancelNavigation (0) | 2023.09.23 |
---|---|
[C# - Prism] 프리즘 예제 21 - PassingParameters (0) | 2023.09.20 |
[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 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!