2009-04-20 9 views
1

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

ответ

2

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

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

+1

+1 Преобразователи могут быть в значительной степени отменены при использовании MVVM. В результате вы получите более чистый и понятный код. –

0

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

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

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

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