使用额外属性装饰可序列化类

时间:2011-03-15 10:49:06

标签: windows-phone-7 xml-serialization

我正在构建一个Windows Phone 7应用程序,我正在尝试用一个额外的属性来装饰一个生成的类来绑定,但我对如何在架构上解决这个问题感到有些困惑。我目前拥有的是这个类,它是使用XML文件中的xsd.exe工具生成的:

[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; }
}

我从网上获取XML并使用XmlSerializer对其进行反序列化,但我想添加一个额外的属性以允许用户在UI中“标记”项目。我希望能够绑定到此属性,因此它应该在更改时通知UI线程。

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:1)

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

ViewModel是专为UI设计的数据表示(包括可绑定属性)。

模型是“纯粹的”数据表示,专门用于建模您的域和持久性(直接到IsolatedStorage或可能通过Web服务持久化)

所以,我建议你为你的UI构建一些ViewModel类来绑定 - 然后弄清楚这些ViewModel如何与模型交互。


另外,我还要谨慎使用Windows Phone 7中的XSD生成类 - WP7似乎更喜欢XDocument Linq XML类,而不是XmlDocument XML类(但我可能有这个错误!)< / p>