【问题标题】:Silverlight bound TextBox loses data when browser closes浏览器关闭时,Silverlight 绑定的 TextBox 会丢失数据
【发布时间】:2009-02-22 11:21:32
【问题描述】:

当我使用双向绑定将 TextBox 控件绑定到对象的字符串属性时,它可以正常工作 - 只要用户在关闭浏览器窗口/选项卡之前离开控件。

但是如果用户更改了文本框的内容然后关闭了期望数据已保存的窗口呢?

虽然可以挂钩到 TextChanged 事件或 Application_Exit() 处理程序并手动更新属性,但您实际上是在重新执行活页夹的工作。尽管如此,这些似乎是迄今为止唯一的解决方案。

注意。 WPF 应用程序中的相同 xaml/代码工作正常(App.OnExit 显示对象中的更新数据)。

【问题讨论】:

    标签: data-binding silverlight-2.0


    【解决方案1】:

    我在这里根据重要的 Web 开发经验做出有根据的猜测,但 Silverlight 经验非常有限。

    您可以使用一些 Javascript 来挂钩 HTML 中的 onunload,然后在您的 Silverlight 代码中调用一个函数来处理它。

    【讨论】:

    • Silverlight 有一个页面卸载类型事件(app_exit),但这仍然需要手动检索控制数据。可能是迄今为止最好的解决方法。
    【解决方案2】:

    这似乎是 Silverlight 的问题。在失去焦点之前,它不会更新文本框上的绑定属性。

    我必须使用的一种解决方法(我正在实现动态过滤器)是实现 TextChanged 事件处理程序并手动更新支持属性。

    【讨论】:

      【解决方案3】:

      Silverlight 的 Binding 类是否有 UpdateSourceTrigger 属性?在 WPF 中,您可以告诉控件在属性更改时(而不是在控件失去焦点时)更新其绑定源,如下所示:

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

      【讨论】:

      • 不错的尝试,我找不到它的文档,当我尝试它时,页面根本没有加载。顺便说一句,我在 WPF 应用程序中测试了我的原始 xaml/代码,它工作正常。
      猜你喜欢
      • 2011-04-11
      • 2015-10-20
      • 1970-01-01
      • 2019-03-16
      • 2013-05-09
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多