728x90

프로젝트 구조가 아래와 같은 폴더구조로 사용되는 경우

아래처럼 App.xaml.cs 단에 정의해준다.

protected override void ConfigureViewModelLocator()
{
    base.ConfigureViewModelLocator();
 
    // TView - TViewModel 과 연계시키기 위함
    ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver((viewType) =>
    {
        var viewName = viewType.FullName;
        if (viewName == null) return null;
        viewName = viewName.Replace(".Views.", ".ViewModels.");
 
        var viewAssemblyName = viewType.GetTypeInfo().Assembly.FullName;
        var viewModelName = $"{viewName}Model,{viewAssemblyName} ";
 
        return Type.GetType(viewModelName);
    });
}

Prism 에서 View와 ViewModel 간의 연계를 해줄때 이름 규칙이 AView - AViewViewModel  이런식으로 되있다.
그런데 위처럼 프로젝트를 구성한 경우 규직을 바꿔주고싶을때 위처럼 코딩하여 규칙을 바꿀수 있다.
위처럼 하게되면 AView-AViewModel 이렇게 연계가 가능하다.
prism:ViewModelLocator.AutoWireViewModel="True" xaml 단에 정의가 되면 ViewModel 을 자동으로 연계시켜준다.

728x90
Posted by kjun.kr
,