0

Добрый!

Имею привязанную в XAML коде коллекцию List<double>. В данной коллекции находятся 3 значения, которые не как не меняют свою последовательность. Данные значения берутся из JSON (то есть у меня реализована модель того, как JSON выглядит). Так вот, мне необходимо каким то образом добавить дополнительные параметры к коллекции и привязать их к необходимым объектам.

То есть скажем:

  1. 85.32567573
  2. 12.54654736
  3. 0

Нужно первому элементу задать переменную цвет красный и скажем string имя "Вася", а само значение в переменную double Value. Второй элемент цвет зеленый, имя "Егор", ну и Value. Третий элемент так и вовсе нужно убрать.

Помогите, как лучше реализовать эти "дополнительные" переменные? Я так понимаю мне нужно создать отдельную коллекцию и туда добавлять необходимые значения, но как это все делается в MVVM модели? Или можно как то через Get; Set; изменить?

EvgeniyZ
  • 15,694
  • У вас уже разделена логика View/ViewModel? – MihailPw May 28 '17 at 08:12
  • @AGS17: Вы можете посмотреть все, что у меня реализовано по этому вопросу. Там мне помогли реализовать чтение данных и их привязку с использованием INotifyCollectionChanged. – EvgeniyZ May 28 '17 at 08:16
  • Хорошо. Добавьте код с вьюшки и его вью модели (править) – MihailPw May 28 '17 at 08:40
  • @AGS17: В ответе, который я Вам предоставил имеется все необходимое (все это у меня в проекте сейчас находится и по сути мало что изменилось). Коллекция значений public List<double> ProjectPct { get; set; }. Как данные заносятся из JSON - тоже там есть (в ответе, первый код), а привязка самая простая {Binding ProjectPct} к ListBox. Или прям принципиально все это продублировать тут? – EvgeniyZ May 28 '17 at 08:52
  • Если вам нужно привязать дополнительные параметры, заведите отдельный класс, в который укладывайте ваши значения, цвет и имя, и собирайте не список double'ов, а список вот этих ваших объектов. – VladD May 29 '17 at 00:39
  • @VladD Хорошо, а как быть с чтением JSON? Ведь если я сменю double на класс, то не будет верно производить дессириализацию. А если я создам отдельный список, то как в него добавлять при добавление значения в эту коллекцию? – EvgeniyZ May 29 '17 at 09:01
  • @EvgeniyZ: Смотрите. Ваш JSON — это модельный уровень. При переходе к уровню VM у вас из списка double конструируется список VM-объектов, с которым вы и работаете. А когда вам нужно сохранить это всё снова в JSON, то вы конструируете новый список double'ов, и сохраняете его. – VladD May 29 '17 at 10:53
  • @VladD: Ну сохранять JSON мне не нужно, только чтение данных с сервера. Я сумел прочитать их и засунуть в List<double>, но если я изменю его на List<class>, то получу ошибку чтения JSON.Net, ибо на сервере идет банальный список double значений. Вы мне не так давно помогли с реализацией отслеживания добавления элементов в коллекцию, думаю может через это попробовать, но должен же быть способ легче)) Если есть, помогите примером пожалуйста! – EvgeniyZ May 29 '17 at 17:29
  • @EvgeniyZ: Смотрите. Вы с сервера читаете List<double>, и на уровне модели пускай он таким же списком и остаётся. Но на уровне VM превращайте его в список чего-то другого, что вам реально нужно. – VladD May 29 '17 at 17:57

0 Answers0