【发布时间】:2012-02-13 05:02:39
【问题描述】:
这是我的要求(为了这个问题,我正在简化事情)。我有一个按名字和姓氏标识的人员列表。该列表存储在 XML 文件中。我需要构建由两个窗口组成的 WPF 应用程序:主窗口显示列表。没什么特别的,只是一个包含名字和姓氏的列表。 底部三个按钮:添加、编辑、删除。 单击删除按钮时,选定的行将从文件中永久删除。 单击添加或编辑按钮时,会弹出第二个窗口(一个对话框),您可以在其中分别输入新人的名字和姓氏,或修改和保留现有记录。
如何以正确的方式在 MVVM 中构建此应用程序?以下是我的具体问题:
1) 从 MVVM 的角度来看,我不能直接绑定到 XML 数据源,或者可以吗?所以我应该创建实现 INotifyPropertyChange 的对象 Person,然后将这些对象存储在 ObservableCollection 中。当我需要将更改保存回文件时,我需要分别编写读取 XML 文件并将其转换为对象集合的代码,反之亦然。我说的对吗?
2) 我将实际保存到 XML 文件中的“Persist”方法实现放在哪里?有两个地方会调用此方法:单击主窗口的删除按钮,或单击添加/编辑窗口的确定按钮。
3) 请注意,相同的窗口处理添加和编辑,我如何以正确的 MVVM 方式实现此窗口?如何分别显示该窗口“添加”或“编辑”的标题,而不诉诸丑陋的 if 语句我在后面编码?我将两个文本框绑定到那里(名字和姓氏)。另请注意,添加/编辑窗口具有确定和取消按钮,在单击确定之前不接受更改,如果单击取消,则必须放弃更改。我看到的一种可能的解决方案是克隆 Person 对象,而不是直接绑定到与绑定列表相同的对象,以便在单击 OK 之前列表不会显示更改,但这很麻烦,因为我需要编写代码来来回复制属性.在 MVVM 中是否有更好的方法?
提前致谢
亨利
【问题讨论】: