0 Вопрос: Каков наиболее правильный способ полностью адаптировать этот код к шаблону MVVM?

вопрос создан в Wed, May 8, 2019 12:00 AM

У меня есть DataGrid с DataGridComboBoxColumn. Каждый ComboBox должен иметь один и тот же выпадающий список: новые значения, введенные в ComboBox (ComboBox является редактируемым и принимает клавишу Enter для ввода нового значения в список, если его там еще нет), список некоторых предопределенных нормальных значения и специальное затененное значение. Пользователь должен иметь возможность добавлять новые строки в сетку данных, как это возможно в текущей версии.

Элементы в ComboBox взяты из BaseVM, а BaseVM и BaseM несколько синхронизированы, точнее BaseVM.ChildVMCollection и BaseM.ChildMCollection. Я попытался найти более простой подход к синхронизации двух коллекций, но мне это не удалось. ChildVM наследуется от ChildM, а BaseVM наследуется от BaseM.

Если возможно, я бы хотел соблюдать шаблон MVVM (я вижу, что он создает гибкость в долгосрочной перспективе).

Я рассмотрел использование фабрики моделей представлений, но для этого примера я упустил ее для простоты. Я использую только вызовы конструктора и приведение типов.

Я думаю, что у меня должен быть ViewModel для каждого элемента в каждом из полей со списком внутри DataGridComboBoxColumn, по одному для каждого представления (ComboBoxItem), и я хочу знать, как правильно реализовать это. В остальном, я думаю, что я мог бы реализовать локатор ViewModel, чтобы получить модель для ViewModel (хотя это просто приведение в приведенном выше коде).

Возможно, вопрос возобновится:

В DataGrid какой самый правильный способ установить ItemsSource каждого ComboBox отдельно, чтобы у каждого ComboBoxItem в них была определенная ViewModel?

Я новичок. Я добавил несколько страниц Википедии в свой список чтения:

  • Внедрение зависимостей
  • Инверсия контроля
  • Шаблон локатора службы
  • Принцип единой ответственности
  • Принцип разделения интерфейса
  • и https://www.oodesign.com/
  • а может и больше.

В настоящее время я изучаю это руководство . Я привык к тому, что WinForms позволяет делать больше всего с выделенным кодом.

Я пытаюсь перестроить код в этом репозитории GitHub более корректным способом MVVM , Это продолжение обновления в этом вопросе .

Код работает, но он не очень гибкий.

    
- 2
  1. да, каждый элемент в списках должен быть ViewModel, реализующим INotifyPropertyChange
    2019-05-08 16: 05: 00Z
  2. Каждый ComboBox не обязательно нуждается в отдельной модели представления. Это кажется чрезмерным. Вы должны иметь ViewModel для каждого независимого Control /View; это может быть окно, страница или любой другой элемент управления, разработанный независимо. Есть ли причина, по которой каждый выпадающий список не может иметь соответствующую коллекцию ObservableCollection в основной ViewModel?
    2019-05-08 16: 39: 55Z
  3. Рабочий код, который "завершен", на самом деле не является целью SO-Questions. В сети обмена стеками есть и другие сайты, которые занимаются просмотром кода - у них есть свои правила. Ваш вопрос очень широкий. Как вы думаете, он подходит для SO?
    2019-05-08 16: 40: 13Z
  4. Если вы задаете вопрос о своем коде, пожалуйста, поместите минимальный, но достаточный образец кода в свой вопрос. Ссылки на сторонние сайты настоятельно не рекомендуются, потому что в какой-то момент они всегда замирают.
    2019-05-08 16: 47: 25Z
0 ответов                              0                         
источник размещен Вот