在Windows Phone中序列化FontFamily

时间:2015-02-14 19:55:42

标签: c# xml windows-phone xml-serialization isolatedstorage

我正在尝试使用XmlSerializer在我的Windows Phone应用程序中读取/保存xml文件。不幸的是我无法读/写它因为我在班上使用FontFamily:

public class Article
{
    public string name { get; set; }
    private FontFamily _fontitem;
    public FontFamily FontItem
    {
        get
        {
            return _fontitem;
        }
        set
        {
            _fontitem = value;
            RaisePropertyChanged(() => FontItem);
        }
    }
}

我正在使用名为StorageHelper的类,就像这里一样:http://blogs.msdn.com/b/dawate/archive/2010/08/31/windows-phone-7-xml-isolatedstorage-example.aspx 我没有上课“Jog”,而是使用我的班级“文章”。

当我尝试加载/保存xml时出现此错误:“ fontfamily无法序列化,因为它没有无参数的构造函数

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以从其名称创建FontFamily。因此,您可以将Article类修改为:

[Serializable]
public class Article
{
    private string _fontItemString;

    public string Name { get; set; }

    [XmlIgnore]
    public FontFamily FontItem
    {
        get
        {
            return new FontFamily(FontItemString);
        }
    }

    public string FontItemString
    {
        get { return _fontItemString; }
        set
        {
            _fontItemString = value;
            RaisePropertyChanged(() => FontItem);
        }
    }
}

这样您就不会序列化FontFamily对象本身,而是序列化要使用的字体系列的名称。每当字体系列字符串发生更改时,您都可以通知实际的FontItem已更改,然后从FontFamily初始化FontItemString