NOOB Challenge Внедрение MVVM в WPF - PullRequest
1 голос
/ 04 мая 2010

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

Я создаю утилиту, помогающую управлять курсом. У меня есть объект COURSE, который содержит несколько свойств и методов, а также коллекцию модулей. Каждый модуль имеет несколько свойств, методов и ссылку на объект PRESENTATION и объект LAB (каждый из них имеет несколько свойств. Сначала я реализовал модель и написал все модульные тесты.

Моя задача сейчас заключается в реализации пользовательского интерфейса (V & VM) ... в частности, части модели представления MVVM.

Пользовательский интерфейс позволяет вам создать курс, просмотреть модули, а затем просмотреть все детали в каждом модуле, где вы можете установить несколько свойств и тому подобное. Для моей модели представления я создал объект для инкапсуляции модели COURSE ... выставив несколько свойств, включая ObserveableCollection модулей курса.

Я столкнулся с несколькими вещами, которые бросают меня за петлю и ищут какую-то помощь:

  1. Я не уверен, правильно ли я подошел к своей части виртуальной машины, создав нечто, инкапсулирующее модель COURSE. Потому что мне нужно получить доступ к МОДУЛЯМ в курсе, а также к LAB и PRESENTATIONs в объекте COURSE. Значит ли это, что мне нужно создавать виртуальные машины для каждого из них? Похоже, я иду по этому пути неправильно, так как этот подход означает, что я собираюсь инкапсулировать каждый объект в модели, то же самое относится и к каждому методу и свойству?
  2. При отображении модулей в пользовательском интерфейсе приложения мне нужно перемещать элементы вверх и вниз по порядку. Методы, которые делают это, встроены в модель COURSE. Хитрость заключается в том, что когда я использую эти методы из представления, оно не обновляет представление, потому что объект курсов находится в виртуальной машине, а не в М. сбросить его так же, как окно хостинга (которое является курсом), но это не идеально. Модули являются наблюдаемой коллекцией, но они не будут обновляться, потому что я делаю работу на более низком уровне.

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

1 Ответ

1 голос
/ 04 мая 2010
  1. Вам не нужно НЕОБХОДИМО создавать виртуальные машины для модулей или лабораторий, достаточно иметь наблюдаемые коллекции каждого из них. Но ... Если вам нужны дополнительные полномочия для каждого из этих объектов, вы можете иметь коллекции ViewModels. (как пример Джоша Смита)
  2. Если ваша логика в модели, вам нужно обновить ViewModel, когда вы вносите изменения в модель.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...