无参数构造函数在XAML中使用ObservableCollection

时间:2016-11-14 02:13:15

标签: c# wpf xaml mvvm

我编辑了这个问题。感谢下面的评论。

看起来我的问题是使用无参数构造函数来声明XAML中的类。但是,我似乎无法弄清楚如何获得带有可观察集合的无参数构造函数。请参阅下面的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
using System.ComponentModel;
using System.Collections.ObjectModel;

namespace LinkKing.Classes
{
    [Serializable()]
    public class TheLinks
    {
        public string linkID;
        public string parentID;
        public string link;
        public DateTime dateAdded;
        public int stepAdded;
        public string img;

        [System.Xml.Serialization.XmlElement("Link")]
        public string Link
        {
            get { return link; }
            set { link = value; }
        }

        [System.Xml.Serialization.XmlElement("DateAdded")]
        public DateTime DateAdded
        {
            get { return dateAdded; }
            set { dateAdded = value; }
        }

        [System.Xml.Serialization.XmlElement("StepAdded")]
        public int StepAdded
        {
            get { return stepAdded; }
            set { stepAdded = value; }
        }

        [System.Xml.Serialization.XmlElement("LinkID")]
        public string LinkID
        {
            get { return linkID; }
            set { linkID = value; }
        }

        [System.Xml.Serialization.XmlElement("ParentID")]
        public string ParentID
        {
            get { return parentID; }
            set { parentID = value; }
        }

        [System.Xml.Serialization.XmlElement("IMG")]
        public string IMG
        {
            get { return img; }
            set { img = value; }
        }

        public TheLinks(string linkID, string parentID, string link, DateTime dateAdded, int stepAdded, string img) : base()
        {
            this.Link = link;
            this.DateAdded = dateAdded;
            this.StepAdded = stepAdded;
            this.LinkID = linkID;
            this.ParentID = parentID;
            this.IMG = img;
        }
    }

    public class MyLinks : ObservableCollection<TheLinks>
    {
        public MyLinks() : base()
        {

        }
    }

}

我得到的错误是The Type does not include any accessible constructors

感谢大家的帮助。

1 个答案:

答案 0 :(得分:1)

仅基于代码,您没有MyLinks的公共无参数构造函数。如果你这样做,你会在 local 上找到它。

通常,如果它是MVVM,我认为为ViewModel设置不同的命名空间会更好。

也许将您的字段(即public string linkID;public string parentID;最多public string img;)设为私有也是有意义的,因为无论如何您都无法从课外访问它们。