【发布时间】:2013-01-23 22:05:07
【问题描述】:
有没有人知道让视图模型与不断变化的 XDocument 保持同步的简单方法? XDocument 来自 Microsoft.VisualStudio.XmlEditor.XmlModel 类 (http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.xmleditor.xmlmodel.aspx)。当用户在 Visual Studio 编辑器中更改文本时,相同的 XDocument 会不断更新。
我不想每次都使用序列化将整个 xml 解析为对象。文档非常好,那会是很大的性能瓶颈。
这个问题和我的问题有点相似,但是“(helper)”要填什么? ViewModel on top of XDocument
要求: - 当 XDocument 树中的某些内容发生更改时,必须更新视图模型,并且必须应用最小的更改。 - 对象的子对象更改时的事件。 - 有多个相同子标签时的 Observablecollections - 必须重用对象,每次从我的自定义类访问对象时都没有新元素。所以必须使用属性来保存从 xml 生成的对象。必须使用新的子对象更新对象。
是否有框架或其他东西可以轻松完成这项任务?我想很多人已经做过这样的事情了,我不想重新发明轮子。
我希望这个问题有点清楚。
【问题讨论】:
-
对于初学者来说,每个
XObject都有一个Changed和一个Changing事件。如果您能以某种方式为您感兴趣的每个子元素订阅这些事件,您就可以轻松地使用这些事件和观察者模式来更新您的 UI。 -
你有我的例子吗?
-
好的,谢谢。但我仍然认为必须有一些东西可以自动为我做这件事。保持 IEnumerable
与 ObservableCollection 同步,并且只为新的 XElements 创建该类的新实例,对于这些事件并不容易。 ObservableCollection 中的顺序也必须与 XDocument 中的相同。
标签: c# xml-parsing linq-to-xml viewmodel visual-studio-sdk