WPF를 model-view-viewmodel 패턴과 함께 사용하고 있습니다. 나는 페이징 설정의 일종 내 기본 창에서새로운 viewmodel을 만들 때마다 뷰 생성자가 호출되지 않는 이유는 무엇입니까?
<DataTemplate DataType="{x:Type VM:ResultsViewModel}">
<VW:ResultsView/>
</DataTemplate>
곳 MainContent 속성에는 현재 페이지 (뷰 모델 인스턴스) :이처럼 연결되어 ResultsView 및 ResultsViewModel 있습니다.
내가이
MainContent = new ResultsViewModel();
ResultsView 같은 페이지를 작성하는 것은 UserControl을 기반으로, 그것은 또한 일부 UI 초기화 물건을 수행로드 이벤트에 대한 핸들러를 가지고있다.
사용자가 다른 페이지를 탐색하는 동안 모든 것이 잘 작동합니다.
그러나 사용자가 ResultsView를 두 번 연속 열면 ResultsView 생성자는 이 아니며 두 번째로 호출되고은로드 된 이벤트가 호출되지 않습니다. 이제 새로운 ResultsViewModel()에 연결된 동일한 이전 ResultsView 인스턴스가있는 것 같습니다!
새로운 ViewModel을 만들 때마다 WPF가 새로운보기를 생성하지 않는 이유는 무엇입니까? 이전 뷰 모델이 파괴되면 WPF가 이전 뷰를 무시하도록 강제 할 수있는 방법이 있습니까?
쿨, x : Shared 수정 자에 대해 몰랐습니다. –
그것에 대한 의견이 있으십니까? – MDDDC
공유가 false로 설정되지 않으면 DataTemplate이 'ResultsView'인스턴스를로드합니다. 즉, 'ResultsView'의 생성자가 호출되지 않습니다. – jHilscher