안녕하세요, 반나무입니다.이번 예제는 RegionMember(view)의 Lifetime을 살펴보는 예제입니다. Region은 View를 다양하게 가질 수 있습니다.IRegionMemberLifetime.KeepAlive를 통해 Region에서 View가 변경될 시해당 View 인스턴스를 유지 할 지 말지 선택 할 수 있습니다.KeepAlive = false : 인스턴스 DisposeKeepAlive = true : 인스턴스 유지public class ViewAViewModel : BindableBase, INavigationAware, IRegionMemberLifetime{ public ViewAViewModel() { } public bool KeepAlive { get => fa..
안녕하세요, 반나무입니다.이미 많은 분들이 알고계시겠지만 View에서 F12를 눌러서 ViewModel로 타고 넘어가는 방법을 소개 해드리려고 합니다. 해당 방법은 정확히는 View에 DataContext를 연결하는 방법입니다. 기본적으로는 예시와 같은 코드가 있다고 할 때, Binding된 값에 F12를 누르면 아래와 같이 나옵니다. 그 이유는 Binding 프로퍼티만 치면 Path=가 생략되기 때문에 원래는 저 모양이라 그렇습니다. 코드를 아래 처럼 두줄 추가 해 줍니다.(내용은 이 글을 보시는 분들 마다 다 다릅니다) Line 7 : 사용할 네임스페이스 작성Line 8 : d:DataContxt를 해당 네임스페이스의 MainViewModel Class로 설정(이건 제 ViewModel 클래스 이름..
안녕하세요, 반나무입니다. 이번 예제는 현재 View에서 다른 View로 Navigation을 할지 확인하는 작업을 합니다. 해당 기능을 사용하기 위해선 IConfirmNavigationRequest를 사용합니다. public void ConfirmNavigationRequest(NavigationContext navigationContext, Action continuationCallback) { bool result = true; if (MessageBox.Show("Do you to navigate?", "Navigate?", MessageBoxButton.YesNo) == MessageBoxResult.No) result = false; continuationCallback(result); } 예..
안녕하세요, 반나무입니다. 이번예제는 Navigation을 사용 할 때 파라미터를 넘겨주는 예제입니다. 처음에는 아무것도 없다가, item들을 선택 할 때마다 하단의 TabControl에 View들이 추가되는것을 확인 할 수 있습니다. PersonListViewModel.cs 파라미터를 넘겨주기위해서는 아무 타입이나 넘길 수 없으며, NavigationParameters 클래스를 만들고 해당 클래스 내부의 Dictionary 타입에 값을 Add해야합니다. private void PersonSelected(Person person) { var parameters = new NavigationParameters(); parameters.Add("person", person); if (person != nul..
안녕하세요, 반나무입니다. 이번 예제는 Navigate될 때 View가 이미 존재하는지 확인하는 예제입니다. 예제를 실행시켜보면 Navigate to View A클릭시 ViewA가 추가되는데 3개를 넘으면 새 View가 추가됩니다. (View B도 마찬가지입니다.) 다른 부분 코드는 대부분 비슷하며, IsNavigationTarget만 다르게 사용중 입니다. IsNavigationTarget은 기존 View를 사용할지, 새로 View를 출력할지 결정합니다. ViewAViewModel private int _pageViews; public int PageViews { get { return _pageViews; } set { SetProperty(ref _pageViews, value); } } publi..