2017-10-26 11 views
2

프리즘 프레임 워크를 사용하는 응용 프로그램을 개발 중입니다. 나는 또한 탐색을위한 프리즘을 등록했다Wpf 프리즘 탐색 후 ViewModel 배출

ViewModelLocationProvider.Register<LoginControl, LoginViewModel>(); 
ViewModelLocationProvider.Register<MainWindow, MainWindowViewModel>(); 
ViewModelLocationProvider.Register<CountryList, CountryViewModel>(); 

: 나는 다음과 같이 부트 스트 래퍼에 viewmodels을 등록

builder.RegisterTypeForNavigation<LoginControl>(); 
builder.RegisterTypeForNavigation<MainWindow>(); 
builder.RegisterTypeForNavigation<CountryList>(); 

완벽한 작동하지만 각 뷰 모델에 대한 생성자가 한 번 처음 동안 호출 발견 ViewModel로 이동합니다. 그런 다음 같은 객체의 뷰 모델이 제공됩니다. 그러나 탐색 후 ViewModel도 삭제해야하며 매번 새로운 객체가 제공되기를 바랍니다.

builder.RegisterType<ModuleLoader>().InstancePerDependency() 

그러나 나는 이것을 달성하기 위해 ViewModelLocationProvider의 모든 방법을 발견 해달라고 :

나는 autofac 일부이 비슷한을 달성하고자합니다. 이것을 달성 할 수있는 방법이 있습니까?

업데이트

그때 하나 개의보기에서 다른 탐색 할 때보기도 배치되지 않은 것으로 나타났다. 동일한 View (Region의 Usercontrol)로 이동 한 다음 ViewModel의 동일한 인스턴스에 대한 실제 원인 인 동일한 객체가 제공됩니다. Prism에서 탐색 후보기를 처분 할 방법이 있습니까?)

답변

1

내보기 모델에 새로운 속성을 만드는 대신

public bool KeepAlive 
{ 
    get 
    { 
     return false; 
    } 
} 
차라리 사용하는 것이
+1

[RegionMemberLifetime (KeepAlive를 = 거짓)]를 내 UserControl을에 IRegionMemberLifetime 인터페이스를 구현하고 건물 아래에 추가하여 문제를 해결 – pix