代码之家  ›  专栏  ›  技术社区  ›  Ben Gribaudo

编辑ObservableCollection的SelectedItem,而不使用绑定控件查看编辑,直到保存为止

  •  1
  • Ben Gribaudo  · 技术社区  · 15 年前

    我有一个包含 ListView 和一个“编辑”按钮。ListView的 ItemSource ObservableCollection<Account> 基础视图模型的属性。它的 SelectedItem 属性也绑定到视图模型。

    单击“编辑”按钮时,现有视图模型将启动编辑视图/视图模型对(“编辑屏幕”),允许用户编辑当前选定的视图 Account 账户 要编辑的对象由主视图模型的 选择项 财产。

    在编辑屏幕中所做的任何更改都会立即反映在另一个屏幕上 列表视图 ,甚至在单击编辑屏幕的“保存”按钮之前。为什么会发生这种情况是有道理的-- 账户 在其属性更改时引发属性更改事件,并且 正在处理这些通知。

    绑定控件(如 列表视图 )应仅在单击“保存”后查看编辑屏幕更改。

    可能的解决方案

    • 正在编辑时挂起帐户的属性更改通知。缺点:如果手动数据绑定更新是在 账户 实例正在编辑中,“正在进行”更改将显示在 列表视图 即使这些变化没有引起通知。此外,如果用户为同一文件启动第二个编辑窗口 ,他们将看到“正在进行”的更改。这个想法被拒绝了。
    • 让编辑屏幕视图模型包装 账户 EditingAccount 类,该类将对其所做的更改复制回原始文件 账户 Save() 被称为。编辑屏幕应该承担起促进这种包装的责任,还是应该要求服务层这样做?

    你觉得这些选择怎么样?当你遇到这个问题时,你是如何解决的?

    1 回复  |  直到 15 年前
        1
  •  1
  •   James Keesey    15 年前

    我会选择第二种选择的一些版本。基本上,这是 MVVM

    推荐文章