_items.Clear()
步骤上给了我一个Null引用异常,我不知道为什么。public void PlotDate()
{
if (_data == null) return;
_items.Clear();
_items.Add(new Graph
{
Name = "by date",
Items = _data.GroupBy(e => string.Format("{0:yyyy-MMM}", e.Date))
.Select(g => new Item { Key = g.Key, Value = g.Sum(x => x.Size) })
.OrderByDescending(e => e.Value)
.ToList()
});
}
_items
是在xaml前端中显示的图的可绑定集合。在这种情况下,该图仅显示了一系列日期中所有大小的总和的饼图。在该类中,有几种方法可以显示几乎相同的不同数据,它们基本上只是对数据进行不同的分组。
奇怪的是,无论我选择哪一个,第一个总是加载得很好,但是当我尝试打开第二个时,它会抛出异常。首次打开视图时,它还会运行填充_data
并运行_items.Clear
的方法,因此当_items
为空时,它可以正常工作。
我已将断点放在任何可以想到的地方,以尝试查看发生了什么,但没有任何内容设置为null。在_items.Clear
步骤运行之前,_items
的计数为1,然后在计数下降到0后立即引发异常。
我也尝试过使用_items.RemoveAt(0)
,并将其放在添加新图形之后,并且执行相同的操作。
发生了什么事?
编辑:
我将包括这一部分,可能会有用。 UI上的显示绑定到项目,项目由项目确定,因此可能是问题所在。不过,我无法更深入地了解,查看NotifyOfPropertyChange的定义不会产生任何有用的信息。partial void OnItemsChanged();
public BindableCollection<Graph> Items
{
get { return _items; }
set
{
if (value == _items)
return;
_items = value;
OnItemsChanged();
NotifyOfPropertyChange("Items");
}
}
以下代码在_items.Clear()步骤上给了我一个Null引用异常,我不知道为什么。 public void PlotDate(){如果(_data == null)返回; _items.Clear(); ...
Clear
函数时,该异常可能会在其他地方发生。为了帮助您调试,您可以通过