为数据绑定创建可观察的模型

时间:2012-01-19 13:25:30

标签: c# wpf data-binding model

我有一个模型用于将数据序列化为xml。

实施例

public class File : IFile
    {

        [XmlAttribute]
        public string ObjectId;


        public string OriginalFileName { get; set; }
        public string FileName { get; set; }
        public int Size { get; set; }
        public string Note { get; set; }


        public static explicit operator File(FileItem a)  // explicit File to FileItem conversion operator
        {
            File b = new File();  // explicit conversion

            b.ObjectId = a.ObjectId;
            b.Note = a.Note;
            b.FileName = a.FileName;
            b.OriginalFileName = a.OriginalFileName;
            b.Size = a.Size;

            return b;
        }
    }

这些类主要用于在worddocument中读取和保存xml文档。 在主应用程序中,我需要数据是可观察的,所以在这种情况下我使用prism,类继承自Notificationobject。

实施例

public class FileItem : NotificationObject, IFile
    {

        public FileItem()
        {

        }

        public static explicit operator FileItem(File a)  // explicit File to FileItem conversion operator
        {
            FileItem d = new FileItem();  // explicit conversion

            d.ObjectId = a.ObjectId;
            d.Note = a.Note;
            d.FileName = a.FileName;
            d.OriginalFileName = a.OriginalFileName;
            d.Size = a.Size;

            return d;
        }



        private string _objectid;
        public string ObjectId
        {
            get { return _objectid; }
            set
            {
                if (!value.Equals(_objectid))
                {
                    _objectid = value;
                    this.RaisePropertyChanged(() => this.ObjectId);
                }
.................

所以我做的是我首先将xml文件读入File类,然后我需要将其转换为FileItem类,当我想将其保存回xml时,我需要再次进行反向转换。这对我来说似乎有点愚蠢。我可以想到一个解决方案,我直接序列化到FileItem但我需要保持文件简单,因为它在一个程序集中定义,该程序集由不需要notificationobject的其他组件使用,并且不会安装prism程序集。

关于如何简化此事的任何想法。

1 个答案:

答案 0 :(得分:0)

您可以使用AutoMapper自动从一个对象映射到另一个对象。