Могу ли я иметь ValueConverter в моей ViewModel? - PullRequest
6 голосов
/ 18 июля 2010

У меня есть выпадающий список, связанный с коллекцией, поэтому пользователь может выбрать один из элементов.Пока все хорошо.

Содержимое поля со списком зависит от элемента, но также и от значения в моей модели представления.Представьте, что значение в моей модели представления - это язык, у меня есть словарь описаний по языку в связанном элементе, и я хочу отобразить правильное.

Как мне поступить?

Ответы [ 2 ]

2 голосов
/ 18 июля 2010

Это классический пример того, почему существует ViewModel - вы хотите иметь логику, которая зависит от состояния trivial в представлении, а также от основной модели.

Представьте, что вы пишете модульный тест для запуска с ViewModel для этого поведения. Вам потребуется ViewModel, чтобы свойство было сопоставлено с выбранным элементом. ViewModel также будет иметь другое свойство, которое зависит от выбранного элемента, а также от другого значения в ViewModel , которое вы упомянули.

Я думаю об этом как о подходе, основанном на тестировании, к дизайну ViewModel - если вы не можете написать модульный тест для его оценки, значит, у вас нет правильного сочетания состояний и опубликованных интерфейсов.

Итак, да, ViewModel может решить проблему, и если вы поместите в нее все состояния, вы сможете выполнить объединение внутри ViewModel.

1 голос
/ 25 августа 2010

Создайте наблюдаемую коллекцию в вашей модели представления типа Item.Свяжите источник элементов вашей модели представления с этой наблюдаемой коллекцией.

public class Item
{
public String description {get;set;}
public String language {get;set;}
public override ToString()
{
      return description;
}
}

Выбранный элемент также будет связан со свойством типа Item.

Переопределение ToString отображает описание.

Свойство Выбранный элемент будет иметь ссылку на свойство выбранного объекта, из которого можно получить язык.

...