|
WPF MVVM построение модели
|
|||
---|---|---|---|
#18+
Добрый день! Пишу первое приложение на WPF с применение MVVM. С view и её связью с viewmodel мне ясно. У меня возник вопрос построения модели. Что у меня есть: Данные: Есть список заказов. Для его получения из БД есть ХП. Каждый заказ содержит список деталей. Для его получения из БД есть ХП. Каждая деталь содержит показатели, которые будут изменятся в БД при помощи ХП. Для их получения из БД есть ХП. Приложение должно состоять из трёх вьюшек: ф.1) Отображение списка заказов и выбор заказа ф.2) Отображение списка деталей выбранного в ф.1. заказа ф.3) Работа с показателями детали выбранной в ф.2 Вопрос 1: Т.е. мне надо хранить список заказов, выбранный заказ, список деталей и выбранную деталь и т.д. Как правильно организовать модель? Сколько должно быть моделей? Если модель одна, то получается что для каждой вьюшки у меня она будет дублироваться? Вопрос 2: Так же есть ещё одна форма, которые осуществляют работу с показателями детали, выбранной в п.2. Выход на неё может произойти из ф.2 и ф.3. В зависимости откуда я вышёл на неё - должен меняться список элементов на форме (скрыть/отобразить опр. кнопки). Вопрос 2: Как правильно передавать параметр откуда от формы к форме? У меня были такие мысли: 1) Все данные хранить в одной модели статического типа. 2) Данные о выбранном заказе, детали, ... хранить в статическом классе. И при создании вью из него брать номер заказа, детали и грузить необходимые данные. Что верно, что - нет? Пишу с использованием MVVM Light Toolkit (стараюсь по крайней мере его использовать). Страницы все создал в виде Page. При загрузке приложения - создаю весь список страниц и кидаю их в коллекцию. Переключение страниц происходит при помощи статичного класса. Некоторые части того, что есть сейчас: Переключалка окон: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
Создание окна списка заказов. Зачем Load, Unload: формы могут подписываться на события, создавать доп. потоки (для работы с оборудованием), которые надо запускать/останавливать. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2014, 11:12 |
|
WPF MVVM построение модели
|
|||
---|---|---|---|
#18+
Алексей Ку., авторТ.е. мне надо хранить список заказов, выбранный заказ, список деталей и выбранную деталь и т.д. Как правильно организовать модель? Сколько должно быть моделей? Если модель одна, то получается что для каждой вьюшки у меня она будет дублироваться? для каждой сущности нужно создать отдельный класс в модели данных. В модели представления можно использовать обёртку, если каждый элемент должен иметь какой то функционал или просто хранить их в списках. Если в разных моделях представления у вас списки этих деталей и заказов одинаковые, то имеет смысл создать базовый класс, который будет включать эти списки. Выделенный элемент это просто поле модели представления. авторТак же есть ещё одна форма, которые осуществляют работу с показателями детали, выбранной в п.2. Выход на неё может произойти из ф.2 и ф.3. В зависимости откуда я вышёл на неё - должен меняться список элементов на форме (скрыть/отобразить опр. кнопки).для списков есть интерфейс ICollectionView через который можно обновлять список элементов на форуме, фильтровать, сортировать и так далее. но сути вопроса я не очень понял. авторКак правильно передавать параметр откуда от формы к форме?через модель представления. Вы нажали кнопку на форуме, через ICommand выполняется метод в модели представления, который будет менять значение в целевой модели. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 09:33 |
|
WPF MVVM построение модели
|
|||
---|---|---|---|
#18+
автордля каждой сущности нужно создать отдельный класс в модели данных. В модели представления можно использовать обёртку, если каждый элемент должен иметь какой то функционал или просто хранить их в списках. Если в разных моделях представления у вас списки этих деталей и заказов одинаковые, то имеет смысл создать базовый класс, который будет включать эти списки. Выделенный элемент это просто поле модели представления. Т.е. в данной ситуации у меня должно быть три модели: Заказ, деталь заказа, показатель детали. Эти три сущности не обладают каким-то дополнительными функциями. Т.е. у меня получается три модели, которые хранят в себе лишь ObservableCollection, так? И, как я понял из вашего комментария, я могу создать четвёртый класс, который будет хранить в себе объединение трёх вышеописанных. Я правильно понял? авторавторТак же есть ещё одна форма, которые осуществляют работу с показателями детали, выбранной в п.2. Выход на неё может произойти из ф.2 и ф.3. В зависимости откуда я вышёл на неё - должен меняться список элементов на форме (скрыть/отобразить опр. кнопки).для списков есть интерфейс ICollectionView через который можно обновлять список элементов на форуме, фильтровать, сортировать и так далее. но сути вопроса я не очень понял. Я не очень понял связь между ICollectionView с самими формами. Опишу задачу по-другому: Мне надо знать из какой формы я пришёл на ф.3. И в зависимости от этого, принимать решение об отображении некоторых элементов. Сейчас я в своём базовом окне реализовал свойство LastPage. Получается я о предидущей форме узнаю не через передаваемый параметр, а при помощи обращения к свойству LastPage базового окна. Мне кажется что это не совсем верная стратегия. авторКак правильно передавать параметр откуда от формы к форме?через модель представления. Вы нажали кнопку на форуме, через ICommand выполняется метод в модели представления, который будет менять значение в целевой модели.[/quot] Что подразумеваете под целевой моделью? Я понимаю последовательность "Нажал кнопку"-"выполнение Command"-??? А дальше? Как мне произвести передачу параметра в другую модель представления? Ведь текущая VM не знает ничего о VM к которой будет совершён переход базовым окном. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2014, 10:05 |
|
WPF MVVM построение модели
|
|||
---|---|---|---|
#18+
Может кто добавит комментариев? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2014, 12:14 |
|
WPF MVVM построение модели
|
|||
---|---|---|---|
#18+
Алексей Ку.Может кто добавит комментариев? Я б в таком случае (как и во многих других) использовал б Composite в качестве т. с. горизонтальной структуры приложения (если вертикальной считать слои View, View model, Model и прочие). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2014, 13:47 |
|
|
start [/forum/topic.php?fid=21&fpage=21&tid=1441026]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
others: | 317ms |
total: | 441ms |
0 / 0 |