Как реализовать WPF ValueConverter, которому нужны данные из viewmodel? - PullRequest
1 голос
/ 24 февраля 2011

Я пишу приложение, которое имеет модель представления и пользовательский контроль, который отображает данные из этой модели представления.Модель представления содержит сущность «Встреча», и эти встречи имеют свойство «Имя пользователя».

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

Каков наилучший способ использованиядругая сущность из viewmodel внутри конвертера?

Возможно ли получить доступ к viewmodel из usercontrol?Я пытался поместить конвертер в свой класс viewmodel, но могу ли я получить доступ к этому классу из usercontrol?

Я понял, что могут работать следующие возможности:

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

  2. Установите параметр преобразователя из класса, который также содержит модель представления при запуске.(Это работает?)

  3. Использовать x: Ссылка для привязки базы данных параметра преобразователя к модели представления, которая неизвестна во время компиляции. (Возможно ли это?)

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

Параметр конвертера - это путь.

Почему модель представления неизвестна во время компиляции?В любом случае привязки не проверяются временем компиляции.

Если для UserControl.DataContext задан экземпляр Appointment, вы должны иметь возможность установить для параметра {Binding UserName} или {Binding Appointment.UserName} в зависимости от того, что именното, что вы устанавливаете как DataContext в UserControl.

1 голос
/ 24 февраля 2011

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

...