TextBox с привязкой к Silverlight теряет данные при закрытии браузера - PullRequest
3 голосов
/ 22 февраля 2009

Когда я связываю элемент управления TextBox со строковым свойством объекта, используя двухстороннее связывание, оно работает нормально - до тех пор, пока пользователь покидает элемент управления, прежде чем он закроет окно / вкладку браузера.

Но как быть с пользователем, который вносит изменения в содержимое текстового поля, а затем закрывает окно, ожидая сохранения данных?

Хотя можно подключиться к событию TextChanged или обработчику Application_Exit () и вручную обновить свойство, вы по сути дела заново выполняете работу связывателя. Тем не менее, похоже, что пока это единственные решения.

пь. Тот же самый xaml / код в приложении WPF работает нормально (App.OnExit показывает обновленные данные в объекте).

Ответы [ 3 ]

1 голос
/ 22 февраля 2009

Я делаю обоснованное предположение, основываясь на значительном опыте веб-разработки, но очень ограниченном опыте Silverlight.

Вы можете использовать немного Javascript, чтобы подключиться к onunload в HTML, а затем вызвать функцию в вашем коде Silverlight для обработки.

1 голос
/ 22 февраля 2009

Похоже, это проблема с Silverlight. Он не обновляет привязанное свойство в текстовом поле, пока не потеряет фокус.

Один из обходных путей, который мне пришлось использовать (я реализовывал динамический фильтр), - это реализовать обработчик событий TextChanged и обновить свойство поддержки вручную.

0 голосов
/ 22 февраля 2009

Имеет ли класс привязки Silverlight свойство UpdateSourceTrigger? В WPF вы можете указать элементу управления обновлять его связанный источник всякий раз, когда свойство изменяется (а не когда элемент управления теряет фокус), например:

<TextBox Text="{Binding Path=Foo,UpdateSourceTrigger=PropertyChanged}" />
...