WPFCALMVVMでビューとViewModelを初期化する2つの方法に出くわしました。
1-より人気があるようです。ビューを自動的に解決するには、ViewModelを解決する必要があります。ViewModelには、ビューに関する情報が含まれています。
public interface IView
{
void SetModel(IViewModel model);
}
public interface IViewModel
{
IView View { get; }
}
public class View
{
public void SetModel(IViewModel model)
{
this.DataContext = model;
}
}
public class ViewModel
{
private IView view;
public ViewModel(IView view)
{
this.view = view;
}
public IView View { return this.view; }
}
2-かなりきれいに見え、ViewModelからビューを削除します。ViewModelを自動的に解決するには、ビューを解決する必要があります。オブジェクトをビューに挿入します(これが適切かどうかはわかりません)。
public interface IView
{
}
public interface IViewModel
{
}
public class View
{
private IViewModel model;
public View(IUnityContainer unityContainer)
{
this.model = unityContainer.Resolve<IViewModel>();
this.DataContext = this.model;
}
}
public class ViewModel
{
}
ビューとモデルを初期化するために受け入れられている方法と、各方法の長所と短所は何ですか。ビューにオブジェクトを挿入する必要がありますか?