Обновление привязки Force Silverlight Silverlight
Как я могу принудительно привязать мои объекты привязки DataContext? Я использую событие в сетке, и обновления привязки не обрабатываются до моего события.
Какие-нибудь дешевые трюки, чтобы обойти это?
В конце концов, я всегда могу сделать что-то старое руководство для получения значений из моих текстовых полей и обновления моего объекта, но было бы неплохо иметь привязку для этого.
UPDATE
Моя сетка содержит два текстовых поля. Если пользователь нажимает на сетку (событие MouseButtonUp), я сохраняю изменения. Но в моем обработчике событий MouseButtonUp, datacontext еще не обновлен. Я бы это себе представлял, потому что текстовое поле обновляется только тогда, когда фокус теряется.
Ответы
Ответ 1
Вы можете принудительно обновить источник привязкой, вызвав метод 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
Ответ 2
Альтернативно вы можете поймать событие TextInput (оно срабатывает при нажатии пользователем внутри текстового поля)
а затем смените фокус на второй текстовый блок. потеря фокуса обновит привязанное значение.