TextBox с привязкой к Silverlight теряет данные при закрытии браузера

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

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

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

nb. Тот же xaml / code в приложении WPF отлично работает (App.OnExit показывает обновленные данные в объекте).


person Phil Bachmann    schedule 22.02.2009    source источник


Ответы (3)


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

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

person 17 of 26    schedule 22.02.2009
comment
Silverlight имеет событие типа выгрузки страницы (app_exit), но это по-прежнему требует ручного извлечения управляющих данных. Вероятно, лучший способ пока что. - person Phil Bachmann; 22.02.2009

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

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

person Srdjan Jovcic    schedule 22.02.2009

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

<TextBox Text="{Binding Path=Foo,UpdateSourceTrigger=PropertyChanged}" />
person Matt Hamilton    schedule 22.02.2009
comment
Хорошая попытка, я не могу найти это задокументированным, и когда я попробовал, страница вообще не загрузилась. Кстати, я протестировал свой исходный код xaml / в приложении WPF, и он отлично работает. - person Phil Bachmann; 22.02.2009