【发布时间】:2016-05-16 18:14:27
【问题描述】:
我有一个带有数据网格和图表的窗口。数据网格有 5 行数据,图表根据所选行绘制该行的数据。现在它只绘制第一行,当我选择不同的行时不会更新图表。这段代码在一个名为 ShellViewModel.cs 的类中:
public void EditLoadForecastViewModel()
{
Shell sh;
Timer timer = new Timer(500);
timer.Elapsed += new ElapsedEventHandler((s, e) =>
{
if (updateGraph)
{
sh.Dispatcher.BeginInvoke(new Action(() => UpdateLoadChart()), null);
updateGraph = false;
}
});
timer.Start()
}
这个函数在一个名为 Shell.xaml 的窗口中调用,像这样
private void btnResults_Click(object sender, RoutedEventArgs e)
{
vm.ReadLoadForecastFile(false,false);
vm.EditLoadForecastViewModel();
}
当按下按钮时,我收到指向此行的错误:
sh.Dispatcher.BeginInvoke(new Action(() => UpdateLoadChart()), null);
错误信息是
用户代码未处理 NullReferenceException:对象引用未设置为对象的实例
【问题讨论】:
-
Shell sh从未被分配 -
当您在
btnResults_Click的开头放置一个断点并将鼠标悬停在vm上时调试器在运行时遇到断点时,您看到了什么?当您在if (updateGraph)之后立即放置一个断点并将鼠标悬停在sh上时,当调试器在运行时遇到断点时,您看到了什么? -
你必须像
Shell sh = new Shell();一样实例化sh