У меня есть приложение WPF по шаблону MVVM с помощью легкого инструментария MVVM.
У меня есть родительская модель представления - ProjectViewModel с 3 дочерними моделями представления. ProjectViewModel сохраняет Project объект в качестве свойства.Дочерние модели просмотра работают с различными частями объекта Project .
Project выглядит примерно так:
public class Project
{
string Prop11{get;set;}
string Prop12{get;set;}
string Prop21{get;set;}
string Prop22{get;set;}
string Prop31{get;set;}
string Prop32{get;set;}
}
Parent viewmodel принадлежит UserControl .Дочерние модели представления принадлежат 3 различным tabitems tabcontrol в UserControl .Каждый tabitem имеет свое собственное представление.
Каждый раз, когда создается пользовательский элемент управления, также создается родительский vm, который, в свою очередь, создает дочерние vm.Я передаю Project объект дочерним виртуальным машинам, чтобы они могли работать с определенными свойствами, которым они соответствуют.И поэтому я создаю дочерние виртуальные машины с помощью оператора new , а не разрешаю его в контейнере DI.Мне это не нравится
project = new Project();
tab1Vm = new PropertySet1ViewModel(project);
tab2Vm = new PropertySet2ViewModel(project);
tab3Vm = new PropertySet3ViewModel(project);
В качестве очевидного решения, которое я вижу, не стоит разделять родительский объект проекта vm по дочернему vm.
Кто-нибудь может предложить более или менее элегантное решение проблемы?