powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM, построение и передача модели
9 сообщений из 9, страница 1 из 1
MVVM, построение и передача модели
    #38864513
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Помогите, пожалуйста, с таким вопросом:

Есть две View (V) и две ModelView(VM) соответственно.
Первая "форма" выводит список заданий. В модели хранится список всех заданий и выбранное задание.
С этой формы мы можем прыгнуть на вторую, где выбираем деталь заказа и редактируем её.

Все данные берутся из БД, а внесение изменений построено на хранимых процедурах(ХП). Т.е. выполнил ХП, изменяющую данные - сразу перегрузил из базы список заданий или список деталей.

При переходе на вторую "форму" я должен загрузить список деталей по выбранному в данный момент заданию на первой "форме".

Есть ли смысл разносить эти данные в разные модели? Мне кажется есть смысл работать из обоих VM1 и VM2 с одной моделью. Насколько это верно?

Если одна модель:
Как мне обеспечить доступ обоих VM к одному экземпляру модели? Я так подозреваю что статичный класс для модели - это порочное решение.

Если разные модели: Как правильно передать выбранное задание из первой модели во вторую?

P.S.
Использую MVVM Light. По крайней мере стараюсь.
...
Рейтинг: 0 / 0
MVVM, построение и передача модели
    #38864538
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVVM Light не пользовался, но в стандартных средствах есть класс ObservableCollection, реализующий интерфейс INotifyCollectionChanged. Он обеспечивает отображение изменений коллекции в списке (если замена коллекции, тогда нужно пользоваться событием PropertyChanged). А список лучше всего делать одним из классов, наследованных от ItemsControl. Во многих из них (наследованных от Selector) можно поставить Binding и на свойство SelectedItem. Его ж можно назначить DataContext'ом какого-нибудь фрагмента подробностей.
...
Рейтинг: 0 / 0
MVVM, построение и передача модели
    #38864584
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
        static M_OrdersList()
        {
            //TODO Parametrize point
            _ordersList = new ObservableCollection<p_ShowPickingMeatOrdersResult>(Terminal.Dc.p_ShowPickingMeatOrders(5).ToList());
        }

     private static readonly ObservableCollection<p_ShowPickingMeatOrdersResult> _ordersList;
        public static ObservableCollection<p_ShowPickingMeatOrdersResult> OrdersList
        {
            get
            {
                return _ordersList;
            }
        }
        private static p_ShowPickingMeatOrdersResult _currentOrder;
        public static p_ShowPickingMeatOrdersResult CurrentOrder
        {
            get { return _currentOrder ?? OrdersList.FirstOrDefault(); }
            set
            {
                if (value != null)
                    _currentOrder = value;
            }
        }



К примеру я вызвал процедуру, которая внесла изменения в БД. Как мне при помощи INotifyCollectionChanged вызвать обновление коллекции OrdersList?
...
Рейтинг: 0 / 0
MVVM, построение и передача модели
    #38864585
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но я всё ещё жду что мне кто-то поможет советом касательно построения и управлению моделью....
...
Рейтинг: 0 / 0
MVVM, построение и передача модели
    #38864625
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
MVVM, построение и передача модели
    #38865061
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.К примеру я вызвал процедуру, которая внесла изменения в БД. Как мне при помощи 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.
public static p_ShowPickingMeatOrdersResult CurrentOrder
        {
            get { return _currentOrder ?? OrdersList.FirstOrDefault(); }
            set
            {
                if (value != null)
                {
                    _currentOrder = value;
                    OnPropertyChanged("CurrentOrder");
                }
            }
        }


И на него ставить binding для вывода подробностей.
Код: xml
1.
2.
3.
<Border DataContext="{Binding CurrentOrder}">
  <!-- здесь вывод подробностей CurrentOrder -->
</Border>
...
Рейтинг: 0 / 0
MVVM, построение и передача модели
    #38865237
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81,

В том то и дело, что ObservableCollection я не меняю напрямую. Я вызываю лишь ХП, которая вносит изменения в БД после чего я должен заново выполнить другую ХП, которая получает данные.

А если я вызываю INotifyCollectionChanged, то тогда где и как указать, что для обновления _ordersList (в рамках моего примера) надо сделать
Код: c#
1.
_ordersList = new ObservableCollection<p_ShowPickingMeatOrdersResult>(Terminal.Dc.p_ShowPickingMeatOrders(5).ToList());

?
...
Рейтинг: 0 / 0
MVVM, построение и передача модели
    #38865306
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда, как я уже говорил, при замене коллекции:
Код: c#
1.
OnPropertyChanged("OrdersList");


OnPropertyChanged - имеется в виду вызов события PropertyChanged из интерфейса INotifyPropertyChanged, который должен реализовывать view model.
...
Рейтинг: 0 / 0
MVVM, построение и передача модели
    #38865348
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно создать CollectionView на основе перечисляемого списка и потом вызывать в интефейсе ICollectionView метод Refresh.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM, построение и передача модели
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]