2013-10-15 4 views
0

У меня есть класс Person, который не реализует INotifyPropertyChanged. My ViewModel имеет свойство типа Person. В моем представлении одна из панелей имеет MyViewModel.SelectedPerson как DataContext, поэтому я связываю некоторые TextBox es с Weight, Height и BodyMassIndex.Могу ли я принудительно обновить элемент управления через EventTrigger до другого события «LostFocus» с контролем данных?

Это так случается, что BodyMassIndex рассчитывается из Weight и Height, но так как Person не уведомляет своих собственных изменений, каждый раз, когда я изменить один из Height или Weight, BodyMassIndex не обновляется.

Мой вопрос: Как я могу запросить «обновление» textboxBodyMassIndex Текстовое свойство, используя EventTrigger (или любой другой способ), который «прослушивает» два других текстовых поля «ValueChanged»?

Спасибо за чтение!

+0

Если вы можете, внесите INotifyPropertyChanged – Tony

+0

Вы можете просто добавить событие TextChanged в два других текстовых блока. – Tony

+0

@Tony TexBoxes в WPF уже имеет событие TextChanged, я просто не знаю, как его использовать в DataTrigger для обновления другого TextBox ... Кроме того, я планирую следовать стратегии DomainObjects, которая не уведомляет их изменения свойств, по крайней мере, пока я могу (ViewModels должны это сделать) – heltonbiker

ответ

1

Создайте класс расширенного человека (или частичный к существующему для сгенерированного кода как другой вариант), который наследуется от класса person и реализует INotifyPropertyChanged. Новый класс имеет расширенные свойства, которые основаны на (и изменяют) исходные свойства, но сообщают об уведомлении для обновления экрана по мере необходимости. Затем представление привязано к расширенным свойствам, которые в коде изменяют исходные свойства; поэтому работа выполнена без проблем.

Смежные вопросы