В C # (WPF) происходит ли привязка данных при немедленном изменении данных в потоке пользовательского интерфейса? - PullRequest
5 голосов
/ 16 октября 2010

Я создаю приложение, и я был под предположением что когда элемент управления привязан к члену в модели представления (т. е. TextBox в строковое поле) строка обновляется всякий раз, когда пользователь изменяет информацию в текстовом поле и не позднее.

Но я обнаружил, что строка обновляется, когда текстовое поле изменяется И когда пользователь нажимает \ вкладки из текстового поля.

(я использую платформу Caliburn.Micro, если это имеет значение.)

Может кто-нибудь объяснить, что правильно и как сделать так, чтобы изменение сразу отражается?

1 Ответ

6 голосов
/ 16 октября 2010

Это не проблема WPF ... полностью зависит от элементов управления.

Но я обнаружил, что строка обновляется при изменении текстового поля И когда пользователь нажимает \ вкладки из текстовое поле.

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

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c3ae2677-7cc9-4bb3-9cce-4e7c0eeff6f0 имеет решение - в основном для триггера источника обновления установлено свойство изменено. Однако, если вы сделаете это, вы получите в модель гораздо больше недопустимых данных, например, когда люди вводят номер счета-фактуры, все частичные компоненты будут поступать в модель.

http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx имеет хорошее объяснение - как и сказано, обычным триггером является PropertyChanged, а для свойства text по умолчанию используется значение LostFocus.

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