Как иметь разные выборы двух списочных представлений, привязанных к одним и тем же экземплярам в WPF / MVVM - PullRequest
1 голос
/ 23 февраля 2012

Я использую WPF и MVVM.В моем приложении было бы неплохо выбрать на главном экране элемент, а затем нажать кнопку, чтобы увидеть подробности.Новое окно должно быть открыто, и (множественные) выборы могут быть сделаны в виде списка, где IsSelected привязан к элементам в ObservebleCollection.

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

Я хотел бы иметь два возможных окна с разными вариантами выбора.Возможно ли это и что нужно сделать, чтобы это заработало?

Обновление: пример: скажем, у меня будет машина с 4 колесами (сборник).В списках в обоих окнах показаны 4 колеса (один элемент - одно колесо).Когда я выбираю колеса 1 и 2 в виде списка, я думаю, что в другом окне также будут выбраны колеса 1 и 2.Но я хочу выбрать возможно 3 и 4 в окне 2 и колесо 1 и 2 в окне 1).И я не хочу добавлять еще одну коллекцию из 4 колес, иначе у меня была бы машина с 8 колесами ... или 2 машины с 4 колесами, но если бы я сменил колеса 3 и 4, это изменило бы только вторую машину.

Обновление 2: кстати, в моем приложении:

  • У меня от 0 до n окон с представлением списка.
  • Я создаю окно, включающее модель представления.
  • Каждая модель представления ссылается на «реальную» модель.

Переменная привязки для выбранных элементов находится внутри реальной модели, думаю, мне нужно переместить ее в модель представления, но я не знаю как.Потому что свойства (колес в примере) находятся в «реальной» модели, и они также связаны в том же виде списка (элементы).Я с

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

Если имеется только два списка, вы можете привязать IsSelected к двум отдельным свойствам (т. Е. IsSelectedInList1, IsSelectedInList2).

Но на самом деле модель представления должна быть представлением в коде без представления.ваш пользовательский интерфейс.Итак, если у вас есть две (или N) копии списка в вашем пользовательском интерфейсе, которые должны иметь разные состояния, имеет смысл создать две (или N) копии этой модели представления в памяти для ее представления.

И я не хочу добавлять еще одну коллекцию из 4 колес, иначе у меня была бы машина с 8 колесами ... или 2 машины с 4 колесами, но если я поменяю колеса 3 и 4, это изменит только второеавтомобиль.

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

1 голос
/ 23 февраля 2012

Два окна будут синхронизированы, только если оба списка связаны с одной коллекцией (т. Е. С одной и той же ссылкой) или связаны с коллекциями, содержащими одинаковые экземпляры объекта. Поэтому каждая модель представления должна иметь свою собственную независимую коллекцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...