WPF
응용 프로그램의 기본 창을 보유하고 현재 viewmodel 개체를 기반으로 한 프레임의보기를 전환하는 기본 viewmodel이 있습니다. 뷰 모델 간을 전환하려면 List
의 기본이 아닌 뷰 모델이 있어야합니다.MVVMLight 메신저 메시지를 수신하지 못했습니다.
private IPageViewModel currentPageViewModel;
private List<IPageViewModel> pageViewModels;
//Add pages
PageViewModels.Add(new FirstViewModel(dataService, storageService));
PageViewModels.Add(new SecondViewModel(dataService, storageService));
PageViewModels.Add(new ThirdViewModel(dataService, storageService));
//Set initial page
CurrentPageViewModel = PageViewModels[0];
첫 번째 "현재"viewmodel 개체는 처음 프로그램을 시작할 때로드되는 개체입니다. FirstViewModel
을 통해 메시지를 보내고 SecondViewModel
으로 접수합니다. 문제는 적어도 적어도 한 번 변경하여 SecondViewModel
에 도달 할 때까지 메시지를받지 못한다는 것입니다.
SecondViewModel
이 메시지를 받기 위해 아직 인스턴스화되지 않은 것이 분명하지만 나는 세계에서 그렇지 않은 것이 확실합니다.
보너스 정보와 질문 ... 내가보기/viewmodels를 변경할 때마다, 그것은 다른 페이지를 ... 생성
<Frame x:Name="DisplayAreaFrame" Content="{Binding CurrentPageViewModel}" />
MainWindow.xaml
에서보기 밖으로 변경됩니다 곳입니다 .. 그것은을 겉으로보기에는 직접적으로 변하지 않습니다. 대신, 앞뒤로 뒤집을 수있는 ... 페이지 (?)를 추가합니다. 이 버튼은 두 번째 또는 세 번째보기 모델에로드 한 후에 만 나타납니다.
어쨌든, 나는 지금 생각에서 신선한 것이므로 어떤 아이디어라도 도움이되는 영감 일 수 있습니다! 미리 감사드립니다.
편집 : 더 파고 후 생성자
Messenger.Default.Register<String>(this, id => {handleSelectedMessage(id);});
생성자의 메시지를 구독하셨습니까? – jannagy02
@ jannagy02 사과드립니다 ... 의견이 있다는 것을 몰랐습니다. 나는 생성자에 간단한 메신저 등록을 등록했다. 줄은 위입니다. 다시 한 번, SecondViewModel으로 전환하면 메시지를받습니다. –