2016-05-16 18 views
-1

Ich habe ein Fenster mit einem Datagrid und einem Diagramm. Das Datenraster besteht aus 5 Datenzeilen und das Diagramm zeigt die Daten der Zeile basierend auf der ausgewählten Zeile an. Im Moment wird nur die erste Zeile grafisch dargestellt und die Grafik wird nicht aktualisiert, wenn ich eine andere Zeile auswähle. Dieser Code ist in einer Klasse namens ShellViewModel.cs:C# Fehler Objektreferenz nicht auf eine Instanz eines Objekts gesetzt

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() 
} 

Diese Funktion ist in einem Fenster aufgerufen wird Shell.xaml genannt wie dieses

private void btnResults_Click(object sender, RoutedEventArgs e) 
{ 
    vm.ReadLoadForecastFile(false,false); 
    vm.EditLoadForecastViewModel(); 
} 

Wenn die Taste gedrückt wird, erhalte ich einen Fehler bei dieser zeigt line:

sh.Dispatcher.BeginInvoke(new Action(() => UpdateLoadChart()), null); 

Die Fehlermeldung ist

Nullreferenceexception wurde vom Benutzer Code unhandled: Objektverweis nicht auf eine Instanz eines Objekts

+5

'Shell sh' nie – Jonesopolis

+0

zugewiesen wird, wenn Sie einen Haltepunkt zu Beginn des' btnResults_Click' setzen und schwebten mit der Maus über 'vm', wenn der Debugger den Haltepunkt zur Laufzeit getroffen, was hast du gesehen? Wenn Sie einen Haltepunkt unmittelbar nach 'if (updateGraph)' setzen und die Maus über 'sh' halten, wenn der Debugger zur Laufzeit auf den Haltepunkt trifft, was haben Sie gesehen? –

+0

Sie müssen SH wie 'Shell sh instanziieren = neue Shell();' –

Antwort

0

eine neue Instanz des Objekts Shell SH instanziieren.

Shell sh = new Shell(); 
Verwandte Themen