Windows phone 7 用额外属性装饰可序列化类

Windows phone 7 用额外属性装饰可序列化类,windows-phone-7,xml-serialization,Windows Phone 7,Xml Serialization,我正在构建一个WindowsPhone7应用程序,并试图用一个附加的属性来修饰生成的类,但我对如何从体系结构上解决这个问题有点困惑。我目前拥有的是这个类,它是使用xsd.exe工具从XML文件生成的: [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.Diagnostics.DebuggerStepThroughAttribute] [System.Xml.Serialization.Xm

我正在构建一个WindowsPhone7应用程序,并试图用一个附加的属性来修饰生成的类,但我对如何从体系结构上解决这个问题有点困惑。我目前拥有的是这个类,它是使用xsd.exe工具从XML文件生成的:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.Diagnostics.DebuggerStepThroughAttribute]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public class Session
{
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string Abstract { get; set; }

    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string Speaker { get; set; }

    [System.Xml.Serialization.XmlAttributeAttribute]
    public string TimeslotBegin { get; set; }

    [System.Xml.Serialization.XmlAttributeAttribute]
    public string Location { get; set; }

    [System.Xml.Serialization.XmlAttributeAttribute]
    public string TimeslotEnd { get; set; }

    [System.Xml.Serialization.XmlAttributeAttribute]
    public string Title { get; set; }
}
我正在从web获取XML并使用
XmlSerializer
对其进行反序列化,但我想添加一个附加属性,以允许用户在UI中“标记”项目。我希望能够绑定到这个属性,因此它应该在更改时通知UI线程


关于如何解决这个问题有什么想法吗?

对于这种情况,我建议您将模型与ViewModel分开

ViewModel是专为用户界面设计的数据表示(包括可绑定属性)

该模型是“纯”数据表示,专门为域建模和持久性而设计(可以直接到隔离存储,也可以通过web服务持久化)

因此,我建议您为UI构建一些要绑定的ViewModel类,然后确定这些ViewModel如何与模型交互



另一方面,我对在WindowsPhone7中使用XSD生成的类也持谨慎态度-WP7似乎更喜欢XDocument Linq XML类,而不是XmlDocument XML类(但我可能有错误!)

对于这种情况,我建议您将模型与ViewModel分开

ViewModel是专为用户界面设计的数据表示(包括可绑定属性)

该模型是“纯”数据表示,专门为域建模和持久性而设计(可以直接到隔离存储,也可以通过web服务持久化)

因此,我建议您为UI构建一些要绑定的ViewModel类,然后确定这些ViewModel如何与模型交互



顺便说一句,我对在WindowsPhone7中使用XSD生成的类也持谨慎态度-WP7似乎更喜欢XDocumentLinqXML类,而不是XMLDocumentXML类(但我可能有这个错误!)

谢谢你的回答,斯图尔特。在问stackoverflow问题之前,我已经尝试过这种方法,但我正在尝试弄清楚如何在不清除ViewModel数据的情况下更新模型数据。例如,如果我为名为
ViewSession
Session
制作一个包装器,它包含一个
Session
实例和附加属性,我将如何继续更新
Session
实例?谢谢你的回答,斯图尔特。在问stackoverflow问题之前,我已经尝试过这种方法,但我正在尝试弄清楚如何在不清除ViewModel数据的情况下更新模型数据。例如,如果我为名为
ViewSession
Session
制作了一个包装器,它保存了一个
Session
实例和附加属性,我将如何继续更新
Session
实例?