Совместное использование свойства ViewModel среди дочерних ViewModels в WPF с использованием MVVM - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть приложение 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.

Кто-нибудь может предложить более или менее элегантное решение проблемы?

1 Ответ

0 голосов
/ 27 декабря 2018

Я не вижу ничего плохого в том, как ты это решил.Другим решением было бы использовать Dependency Injection и внедрить его как синглтон.В противном случае ваше решение с передачей ссылки на конструктор выглядит нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...