Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在XAML中使用ObservableCollection的无参数构造函数_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

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

C# 在XAML中使用ObservableCollection的无参数构造函数,c#,wpf,xaml,mvvm,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.Comp

我已经编辑了这个问题。谢谢你的评论

看起来我的问题是使用无参数构造函数在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()
        {

        }
    }

}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Xml.Serialization;
使用系统组件模型;
使用System.Collections.ObjectModel;
名称空间链接类
{
[可序列化()]
公共类链接
{
公共字符串链接ID;
公共字符串parentID;
公共字符串链接;
已添加公共日期时间;
增加了公众参与;
公共字符串img;
[System.Xml.Serialization.xmlement(“链接”)]
公共字符串链接
{
获取{返回链接;}
设置{link=value;}
}
[System.Xml.Serialization.xmlement(“DateAdded”)]
公共日期时间已添加
{
获取{return dateAdded;}
设置{dateAdded=value;}
}
[System.Xml.Serialization.XmlElement(“StepAdded”)]
增加了公共int
{
获取{return stepAdded;}
设置{stepAdded=value;}
}
[System.Xml.Serialization.XmlElement(“LinkID”)]
公共字符串链接ID
{
获取{return linkID;}
设置{linkID=value;}
}
[System.Xml.Serialization.xmlement(“ParentID”)]
公共字符串ParentID
{
获取{return parentID;}
设置{parentID=value;}
}
[System.Xml.Serialization.xmlement(“IMG”)]
公共字符串IMG
{
获取{return img;}
设置{img=value;}
}
公共链接(字符串linkID、字符串parentID、字符串链接、DateTime dateAdded、int stepAdded、字符串img):base()
{
this.Link=Link;
this.DateAdded=DateAdded;
this.StepAdded=StepAdded;
this.LinkID=LinkID;
this.ParentID=ParentID;
this.IMG=IMG;
}
}
公共类MyLink:ObservableCollection
{
公共MyLinks():base()
{
}
}
}
我得到的错误是
类型不包括任何可访问的构造函数


我感谢大家的帮助。

仅根据代码,您没有MyLink的公共无参数构造函数。如果你这样做了,你会在本地找到它

通常,如果是MVVM,我认为为ViewModel使用不同的名称空间会更好


也许将字段(即
公共字符串linkID;公共字符串parentID;
公共字符串img;
)也设置为私有也是有意义的,因为您无论如何都不会从类外访问它们。

我猜,由于链接类缺少显式可见性修饰符,因此它被声明为私有,因此,您无法在Xaml上看到它。尝试将其声明为public。感谢Karel的回复,但是我尝试将
MyLink
声明为public,但它不起作用。您是在声明为public后编译的吗?另外,查看您的类,我发现您没有定义无参数构造函数。如果没有公共的无参数构造函数,您将无法在XAML中实例化任何对象。嗨,卡雷尔,谢谢你的想法。我尝试向类中添加无参数构造函数,但仍然不起作用。不过我很感谢你的帮助。我想我们已经把它缩小到了构造函数的范围,但不是这样。你需要比“它不会让我”更具体一些。提供一个可靠地再现问题的好方法,并准确地解释您收到的错误消息。还要解释你为解决问题所做的一切,非常准确地说明每一次尝试都发生了什么以及为什么没有成功。有关如何以清晰、负责的方式表达问题的更多信息,请参见。Tyres,感谢您的回答。我已将问题缩小到无参数构造函数。我重新编写了这个类,现在我可以在本地找到它,但是现在我得到一个错误“该类型不包含任何可访问的构造函数”。@Cnote您的代码现在是什么样子?你能试着右键点击解决方案并进行重建,看看这是否能解决问题吗?嗨,Tyres,我已经更新了我的问题。我感谢你的帮助。似乎我没有用我的可观察集合正确地声明我的无参数构造函数。@Cnote您计划将哪个类用作ViewModel?假设您使用纯WPF,则需要实现INotifyPropertyChanged。您的TheLink类具有ViewModel属性和字段,但它在这里的行为实际上就像一个模型。最好将1视图模型考虑为1视图,以防止它变得复杂。我真的猜不出为什么我的链接会是一个视图模型,但是链接仍然没有无参数的构造函数。我有一个datagrid和一个图表,它们都使用相同的数据。出于某种原因,在我的脑海中,我认为我可以对这两个视图使用相同的视图模型。我认为MVVM对于自学成才的人来说太复杂了。