【发布时间】:2013-08-27 20:14:44
【问题描述】:
我正在尝试将我创建的 WPF(不使用 MVVM 和 DataBinding)更改为使用这些强大功能的 WPF。
我已经建立了一个具有多个属性的 Person 模型(这里太长,无法列出),其中包含所有的 get 和 set,甚至 NotifyProtertyChanged 属性,例如 ID 和 Full Name 属性。
现在我想(通过单击按钮启动代码,以确保我在编写代码时知道它现在何时开始)让我的 WPF 应用程序检查值列表,将其与在线 XML记录并从中检索列表中与查找的值匹配的每个人的数据列表,当然还可以设置模型的一些属性。
一个例子: - 寻找“莱维特” - 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 文档中在 InformationProvider 类中:
List<Person> persons= new List<Person>();
persons= informationProvider.GetPeople(searchShowName);
我的问题是,当我启动代码并单击按钮进行测试时,它会引发错误,指出“对象引用未设置为对象的实例”。并突出显示我的台词
persons= informationProvider.GetPeople(searchShowName);
我该如何解决这个问题?
【问题讨论】:
-
你不能从调试中看到什么对象为空吗? @_@
标签: c# wpf data-binding mvvm