我正在尝试将我创建的 WPF(不使用 MVVM 和 DataBinding)更改为确实使用这些强大功能的 WPF。
我已经建立了一个具有多个属性的 Person 模型(这里列出的太长了),其中包含所有的 get 和 set,甚至 NotifyProtertyChanged 属性,例如 ID 和 Full Name 属性。
现在我想让我的 WPF 应用程序检查一个值列表,将其与在线 XML 文档进行比较并检索列表中每个人的数据列表与查找的值匹配,当然还设置了模型的一些属性。
一个例子: - 寻找“Lewitt” - XML 文档有 4 个姓 Lewitt 的人,所以它将这 4 个人添加到我的列表中(包括设置为我之前设置的 Person 模型类的项目)并设置值每个项目的 ID 和 FullName(为示例缩短)。
这是我迄今为止在搜索某个值(称为搜索字符串)时实现的 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”,它确实存在于我们正在查看的 XML 文档中信息提供者类:
List<Person> persons= new List<Person>();
persons= informationProvider.GetPeople(searchShowName);
我的问题是,当我启动代码并单击按钮进行测试时,它会引发错误,指出“对象引用未设置为对象的实例”。并突出我的台词
persons= informationProvider.GetPeople(searchShowName);
我怎样才能解决这个问题?