AutoWireViewModelChanged
안녕하세요. 이재웅입니다.
이 긴 이름을 가진 메서드는 ViewModelLocationProvider를 통해 제공됩니다. 그리고 이름에서 알 수 있듯이 Prism 설정에 의해 View가 생성될 때 대상 ViewModel을 Injection 주입을 통해 자동으로 생성하고 그 결과를 콜백 메서드로 반환하는 기능을 제공하고 있습니다. 또한 콜백 메서드는 object 타입의 View와 object 타입의 ViewModel을 반환합니다.
Prism에서는 ViewModelLocationProvider 클래스를 통해 한 가지 유용한 이벤트(콜백함수 호출 방식)를 제공합니다.
사용 방법은 심플합니다. 먼저 이를 간단하게 테스트 하기 위해 간단한 UI 클래스를 만들었습니다. 이 클래스를 만든 이유는 모든 View에 공통으로 적용하기 위함입니다.
public class SmartView : ContentControl
{
}
그 다음 ViewModelLocationProvider를 통한 AutoWireViewModelChanged 메서드와 콜백 메서드를 구현해보도록 하겠습니다.
public class SmartView : ContentControl
{
public SmartView()
{
ViewModelLocationProvider
.AutoWireViewModelChanged(this, AutoWireViewModelChanged);
}
private void AutoWireViewModelChanged(object view, object dataContext)
{
// Prism을 통해 생성된 Injection 주입된 ViewModel이 생성될 때 마다
// 이 콜백 메서드가 호출됩니다!
}
}
이 기능을 통해 Prism View와 ViewModel의 생성과 흐름을 좀 더 명확히 인지하고, View와 ViewModel이 모두 생성된 이 시점에서 다양한 확장 응용 작업을 할 수 있는 타이밍을 확보할 수 있습니다.
예를 들어 인터페이스를 활용한 이런 작업도 간단하게 가능하겠죠? (예를 들어!!!, 여러분의 MVVM 규칙에 맞게…)
public class SmartView : ContentControl
{
public SmartView()
{
ViewModelLocationProvider
.AutoWireViewModelChanged(this, AutoWireViewModelChanged);
}
private void AutoWireViewModelChanged(object view, object dataContext)
{
if (dataContext is IViewCreatable ui)
{
ui.OnInitialized();
}
}
}
그 밖에도 프로젝트 구조나 특성에 맞게 다양한 목적과 의도로 AutoWireViewModelChanged 메서드를 를 활용할 수 있을 것입니다.
제가 준비한 내용은 여기까지 입니다.
읽어주셔서 감사합니다.