【问题标题】:Cancelling Two Way Data Binding In Silverlight在 Silverlight 中取消双向数据绑定
【发布时间】:2009-07-21 19:02:23
【问题描述】:

我有一个 ObervableCollection 数据项。此集合绑定到 ListBox。当用户从列表框中选择一个项目并单击“编辑”按钮时,将显示一个带有该项目详细信息的用户控件,其中包含绑定到文本框的各种属性。每种绑定模式都设置为 TwoWay。在这个细节用户控件上,我想实现 2 个按钮,确定和取消。这将与 Windows 中的 UI 一致。此应用程序使用 Model-View_ViewModel 模式。这是我的问题:

1) 当所有更改都已提交时,如何实现取消按钮?

【问题讨论】:

    标签: silverlight-2.0


    【解决方案1】:

    您可以绑定到真实集合的副本,然后仅在单击 OK 时提交更改,或者您可以重新处理您的数据对象以允许事务性更改,从而您可以根据对话结果调用 Commit 或 Rollback。

    【讨论】:

      【解决方案2】:

      简短的回答是你不能。 SL 不会将数据对象中的原始值存储在任何地方,因此除非您更改流程,否则您无法恢复由于数据绑定而做出的更改。

      我建议在将要编辑的对象放入对话框之前对其进行复制。如果您的对象很简单,您可以轻松添加“MakeCopy”成员:

      public MyObject MakeCopy()
      {
          return (MyObject)base.MemberwiseClone();
      }
      

      【讨论】:

        猜你喜欢
        • 2011-10-29
        • 1970-01-01
        • 2022-11-07
        • 2011-09-06
        • 1970-01-01
        • 2013-02-24
        • 2015-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多