Получение ссылки на ViewModel из IValueConverter - PullRequest
3 голосов
/ 20 апреля 2009

Существует ли чистый и / или общепринятый стандартный способ обращения к ViewModel из IValueConverter, или это нарушает шаблон MVVM? По сути, я хочу преобразовать связанные данные в пользовательском интерфейсе на основе других свойств ViewModel. Я предполагаю, что это тот же вопрос, что и то, как вы ссылаетесь на Window / Page из IValueConverter, поскольку ссылка на элемент управления не передается методам Convert / ConvertBack.

Ответы [ 2 ]

3 голосов
/ 20 апреля 2009

Я бы предложил добавить новое свойство в ViewModel, которое объединяет или объединяет другие свойства в ViewModel. Это устраняет необходимость в IValueConverter все вместе.

Проверьте это обсуждение IValueConverters при использовании MVVM.

0 голосов
/ 20 ноября 2013

Всякий раз, когда у меня есть редкий сценарий, когда мне нужно использовать несколько свойств из ViewModel в конвертере, я просто передаю всю модель представления в качестве входных данных, ala;

<Textbox Text="{Binding, Converter={StaticResource WholeObjectConverter}"/>

Поскольку получение ссылки на окно / страницу / представление, которое вызвало преобразование, не является хорошей идеей, поскольку это, безусловно, нарушает шаблон MVVM. Идея состоит в том, что ваши представления и данные являются отдельными объектами, и по замыслу не должны знать друг друга.

Если вы хотите действительно взломать его, вы, вероятно, можете стать умнее и передать нужные ссылки (либо ViewModel, либо View) как часть ConverterParameter в привязке.

...