MVVM-对象引用未设置为实例
本文关键字:实例 设置 对象引用 MVVM- | 更新日期: 2023-09-27 18:29:21
我正试图将我创建的WPF(不使用MVVM和DataBinding)更改为使用这些强大功能的WPF。
我已经设置了一个具有多个属性的人员模型(太长了,无法在此处列出),包括所有的get和set,甚至还有NotifyProtertyChanged属性,如ID和FullName属性。
现在,我想(在编写代码时,只需点击一个按钮即可启动代码,以确保我知道它何时开始)让我的WPF应用程序浏览一个值列表,将其与在线XML文档进行比较,并从中检索列表中与所查找值相匹配的每个人的数据列表,当然还设置了模型的一些属性。
例如:-寻找"Lewitt"-XML文档有4个姓Lewitt的人,所以它将这4个人添加到我的列表中(包括设置为我之前设置的Person模型类的项目),并设置每个项目的ID和FullName的值(示例中简称为)。
这是我在搜索某个值(称为searchstring)时实现的informationProvider类:
public List<Person> GetPeople(string searchstring)
{
string url = string.Format("{0}{1}", BaseURL, HttpUtility.HtmlEncode(searchstring));
XDocument doc = XDocument.Load(url);
var names = (from s in doc.Root.Elements("Persons").Where(s => s.Element("Lastname").Value.Equals(searchstring, StringComparison.InvariantCultureIgnoreCase))
select new Person
{
ID = Convert.ToInt32(s.Element("id").Value),
fullName = s.Element("Firstname").Value + " " + s.Element("Lastname").Value
}).OrderBy(n => n.fullName).ToList();
return people;
}
我试图通过点击按钮为我的项目列表启动此过程(同样,仅用于测试目的)-我设置了一个"Jane Doe"的示例值,该值确实存在于我们在InformationProvider类中查找的XML文档中:
List<Person> persons= new List<Person>();
persons= informationProvider.GetPeople(searchShowName);
我的问题是,当我启动代码并点击按钮进行测试时,它会抛出一个错误,说明"对象引用未设置为对象实例",并突出显示我的行
persons= informationProvider.GetPeople(searchShowName);
我该怎么解决这个问题?
personnel=informationProvider.GetPeople(searchShowName);
这会引发错误,因为信息提供程序尚未实例化。
通过查看你的方法GetPeople,可以肯定地说,你可以让它像这个一样是静态的
public static List<Person> GetPeople(string searchstring)
然后直接从类名中调用它。
您需要将GetPeople设置为静态:
class InformationProvider
{
public static List<Person> GetPeople(string searchstring)
{
//...
}
}
或者创建informationProvider类的实例:
InformationProvider informationProvider = new InformationProvider();
List<Person> persons = informationProvider.GetPeople(searchShowName);
请注意我是如何更改大小写的,并且没有创建一个多余的空列表。