Я столкнулся с двумя способами инициализации Views и ViewModels в WPF CAL MVVM.Каков правильный способ инициализации модели и представления в WPF CAL MVVM
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. Требуется разрешить 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
{
}
Что такое принятый метод инициализации представлений и моделей и каковы преимущества и недостатки каждого метода. Должны ли вы вводить объекты в свое мнение?
The View свойство в варианте 1 было обнаружено мною в разных примерах, но я согласен, что этого не должно быть. – anon