Вручную установить ошибку проверки на элемент управления Silverlight - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть ComboBox, к которому я не могу привязаться напрямую (из-за этой ошибки ), поэтому я установил его SelectedItem из поведения, которое я написал.Теперь, если свойство, привязанное к SelectedValue моего поведения (вместо SelectedValue ComboBox), недопустимо (например, в comboBox ничего не выбрано, когда оно должно быть), я хочу уведомить ComboBox о «красном» и отобразить код ошибки,Я знаю, что это то, что система привязки (если NotifyOnValidationError = true) обрабатывает автоматически (она устанавливает состояние привязанного элемента управления и ErrorCode).

Мой вопрос состоит из двух частей:

  • Как подписаться на уведомление системы Binding?
  • Как установить недопустимое состояние ComboBox И установить код ошибкиБЕЗ взлома шаблона элемента управления или создания ненужных вложенных свойств?

edit: я обнаружил статический класс Validation, но у него есть только GetHasErrors и GetErrors, хотя для этого мне понадобится установить методы.Это безнадежно?

1 Ответ

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

Ладно, после целого дня чтения сообщений на форуме о решениях для взлома для проверки стиля исключений SL3 и ужасных идей с прикрепленными свойствами и комбинированным списком подклассов (о, боль!), Мне удалось объединить его с полу решение :)

Хитрость в том, что элемент управления прослушивает КАЖДОЕ свойство зависимости для уведомления о проверке, включая FrameworkElement.Tag!

Теперь нам нужен объект, реализующий IDataErrorInfo для привязки к тегу comboBox.

Так как в моем сценарии я использую Поведение, чтобы установить comboBox вручную, у меня уже есть привязанные данные о поведении, поэтому все, что я сделал, это связал SelectedValue поведения с тегом comboBox и наблюдаю за фейерверком!

...