我遇到了两种在 WPF CAL MVVM 中初始化视图和视图模型的方法。
1 - 似乎更受欢迎。要求您解析 ViewModel 以自动解析 View。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 中删除了 View。要求您解析 View 以自动解析 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
{
}
初始化视图和模型的公认方法是什么,每种方法的优缺点是什么。您应该将对象注入您的视图吗?