XAML, связывающий несколько элементов управления с одним свойством с помощью UpdateSourceTrigger = PropertyChanged - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть текстовое поле (свойство text) и поле со списком (свойство выбранного элемента), привязанные к одному и тому же текстовому свойству, для обеих привязок UpdateSource установлен в PropertyChanged, так что, как только данные изменяются, другой элемент управления отображаетменять.Все работает хорошо, пока я не изменю значение свойства в коде.

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

1 Ответ

0 голосов
/ 24 сентября 2018

Мое последнее взломанное средство - использовать события фокуса Got и Lost на обоих элементах управления для изменения привязки.Когда соответствующий элемент управления получает фокус, я изменяю привязку на UpdateSourceTrigger = PropertyChanged, а когда элемент управления теряет фокус, я устанавливаю его в LostFocus.Я могу только предположить, что, поскольку есть только один элемент управления с UpdateSourceTrigger = PropertyChanged, XAML / WPF доволен этим!

Событие LostFocus выглядит так

Dim b As New Binding("Comment")
b.UpdateSourceTrigger = UpdateSourceTrigger.LostFocus
EditComment.SetBinding(TextBox.TextProperty, b)

GotFocus такой же, нос PropertyChanged вместо LostFocus.

В настоящий момент я думаю, что это работает нормально для меня.Но я публикую его на тот случай, если кто-то столкнется с той же проблемой или найдет лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...