Force Binding Update Silverlight - PullRequest
       4

Force Binding Update Silverlight

16 голосов
/ 17 апреля 2010

Как я могу принудительно обновить привязки DataContext моих объектов? Я использую событие в сетке, и обновления привязки не обрабатываются до того, как сработает мое событие.

Какие-нибудь дешевые хитрости, чтобы обойти это? В конце я всегда могу сделать старый ручной способ получения значений из моих текстовых полей и обновления моего объекта, но было бы хорошо, если бы связывание сделало это для меня.

UPDATE

Моя сетка содержит два текстовых поля. Если пользователь нажимает на сетку (событие MouseButtonUp), я сохраняю изменения. Но в моем обработчике события MouseButtonUp текст данных еще не обновлен. Я думаю, это потому, что текстовое поле обновляется только тогда, когда фокус потерян.

Ответы [ 2 ]

31 голосов
/ 19 апреля 2010

Вы можете принудительно обновить привязку источника, вызвав метод UpdateSource () для привязки. Попробуйте добавить его в обработчик событий MouseButtonUp непосредственно перед сохранением.

Вроде так:

BindingExpression binding = FirstTextBox.GetBindingExpression(TextBox.TextProperty)
if (null != binding) binding.UpdateSource();

Подробнее об этом можно узнать на MSDN: http://msdn.microsoft.com/en-us/library/system.windows.data.bindingexpression.updatesource(VS.95).aspx

0 голосов
/ 20 июня 2012

В качестве альтернативы вы можете перехватить событие TextInput (оно сработает, когда пользователь нажмет ввод внутри текстового поля) а затем измените фокус на второй текстовый блок. потеря фокуса обновит связанное значение.

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