|
MVVM, построение и передача модели
|
|||
---|---|---|---|
#18+
Добрый день! Помогите, пожалуйста, с таким вопросом: Есть две View (V) и две ModelView(VM) соответственно. Первая "форма" выводит список заданий. В модели хранится список всех заданий и выбранное задание. С этой формы мы можем прыгнуть на вторую, где выбираем деталь заказа и редактируем её. Все данные берутся из БД, а внесение изменений построено на хранимых процедурах(ХП). Т.е. выполнил ХП, изменяющую данные - сразу перегрузил из базы список заданий или список деталей. При переходе на вторую "форму" я должен загрузить список деталей по выбранному в данный момент заданию на первой "форме". Есть ли смысл разносить эти данные в разные модели? Мне кажется есть смысл работать из обоих VM1 и VM2 с одной моделью. Насколько это верно? Если одна модель: Как мне обеспечить доступ обоих VM к одному экземпляру модели? Я так подозреваю что статичный класс для модели - это порочное решение. Если разные модели: Как правильно передать выбранное задание из первой модели во вторую? P.S. Использую MVVM Light. По крайней мере стараюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2015, 16:28 |
|
MVVM, построение и передача модели
|
|||
---|---|---|---|
#18+
MVVM Light не пользовался, но в стандартных средствах есть класс ObservableCollection, реализующий интерфейс INotifyCollectionChanged. Он обеспечивает отображение изменений коллекции в списке (если замена коллекции, тогда нужно пользоваться событием PropertyChanged). А список лучше всего делать одним из классов, наследованных от ItemsControl. Во многих из них (наследованных от Selector) можно поставить Binding и на свойство SelectedItem. Его ж можно назначить DataContext'ом какого-нибудь фрагмента подробностей. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2015, 16:45 |
|
MVVM, построение и передача модели
|
|||
---|---|---|---|
#18+
Ilya81, Комментарий хорош, но не ответил на мои вопросы. По крайней мере я не увидел ответа. Тем не менее спасибо и у меня назрело несколько вопросов по Вашему комментарию: К примеру вот моя коллекция заданий: Код: 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.
К примеру я вызвал процедуру, которая внесла изменения в БД. Как мне при помощи INotifyCollectionChanged вызвать обновление коллекции OrdersList? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2015, 17:15 |
|
MVVM, построение и передача модели
|
|||
---|---|---|---|
#18+
Но я всё ещё жду что мне кто-то поможет советом касательно построения и управлению моделью.... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2015, 17:16 |
|
MVVM, построение и передача модели
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2015, 17:40 |
|
MVVM, построение и передача модели
|
|||
---|---|---|---|
#18+
Алексей Ку.К примеру я вызвал процедуру, которая внесла изменения в БД. Как мне при помощи INotifyCollectionChanged вызвать обновление коллекции OrdersList? Просто внести изменения в _ordersList. Класс ObservableCollection при этом сам вызовет событие CollectionChanged из интерфейса INotifyCollectionChanged с нужными параметрами. Единственное, эти изменения должны вноситься в потоке пользовательского интерфейса (например, через вызов Application.Current.Dispatcher.Invoke). Если ж нужно выводить подробности записей, рекомендую вызывать PropertyChanged в setter'е свойства CurrentOrder. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
И на него ставить binding для вывода подробностей. Код: xml 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 09:22 |
|
MVVM, построение и передача модели
|
|||
---|---|---|---|
#18+
Ilya81, В том то и дело, что ObservableCollection я не меняю напрямую. Я вызываю лишь ХП, которая вносит изменения в БД после чего я должен заново выполнить другую ХП, которая получает данные. А если я вызываю INotifyCollectionChanged, то тогда где и как указать, что для обновления _ordersList (в рамках моего примера) надо сделать Код: c# 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 11:19 |
|
MVVM, построение и передача модели
|
|||
---|---|---|---|
#18+
Тогда, как я уже говорил, при замене коллекции: Код: c# 1.
OnPropertyChanged - имеется в виду вызов события PropertyChanged из интерфейса INotifyPropertyChanged, который должен реализовывать view model. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2015, 12:00 |
|
|
start [/forum/topic.php?fid=21&fpage=19&tid=1440949]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 259ms |
total: | 382ms |
0 / 0 |