none
System.NullReferenceException in WPF? InitializeComponent() übersprungen? RRS feed

  • Frage

  • Hallo

    Ich schreibe gerade ein Programm mit WPF-Seiten. In der WPF-Seite, die als Source gilt tritt immer eine NullReferenceException auf, wenn ich auf die Elemente auf der Seite zugreifen möchte.

    Da fiel mir etwas in der Console auf:

    Einzelschritt: Nichtbenutzercode "AppName.App..ctor" wird übersprungen.

    Dann zwei Zeilen später:

    Einzelschritt: Nichtbenutzercode "AppName.App.InitializeComponent" wird übersprungen.

    Und dann:

    Ausnahme ausgelöst: "System.NullReferenceException" in AppName.exe

    Ich habe hier absichtlich den Namen der App mit "AppName" ersetzt.

    Ich habe keine Ahnung was los ist und hoffe jemand kann mir helfen.

    Vielen Dank im voraus

    Johutha

    Mittwoch, 18. Mai 2016 15:14

Antworten

  • Hallo Johutha,

    bei WPF generiert der Compiler einigen Code den du selbst nicht wirklich siehst. Darunter fällt auch der Konstruktor der App-Klasse sofern du keinen im Codebehind hast sowie das Innere von InitializeComponent. Wenn du nun schrittweise debuggst werden diese entsprechend übersprungen und die Meldung taucht zu deiner Information im Ausgabefenster auf.

    Wenn eine NullReferenceException im Debug-Modus auftritt, wird dir auch verraten wo und bei welchem Element das passiert. Ggf. musst du dir dafür die InnerException näher ansehen oder die Exception-Einstellungen so anpassen dass immer bei ebendieser Exception angehalten wird.

    Controls können noch null sein, sofern InitializeComponent noch nicht vollständig durchlaufen wurde. Das kann der Fall sein sofern du in Eventhandlern auf die Controls zugreifst, die schon wärend dem laden aufgerufen werden. Das kann beispielsweise bei Slidern und dem ValueChanged-Event passieren wenn man Value im XAML setzt.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Johutha Mittwoch, 18. Mai 2016 16:05
    Mittwoch, 18. Mai 2016 15:45
    Moderator

Alle Antworten

  • Hallo Johutha,

    bei WPF generiert der Compiler einigen Code den du selbst nicht wirklich siehst. Darunter fällt auch der Konstruktor der App-Klasse sofern du keinen im Codebehind hast sowie das Innere von InitializeComponent. Wenn du nun schrittweise debuggst werden diese entsprechend übersprungen und die Meldung taucht zu deiner Information im Ausgabefenster auf.

    Wenn eine NullReferenceException im Debug-Modus auftritt, wird dir auch verraten wo und bei welchem Element das passiert. Ggf. musst du dir dafür die InnerException näher ansehen oder die Exception-Einstellungen so anpassen dass immer bei ebendieser Exception angehalten wird.

    Controls können noch null sein, sofern InitializeComponent noch nicht vollständig durchlaufen wurde. Das kann der Fall sein sofern du in Eventhandlern auf die Controls zugreifst, die schon wärend dem laden aufgerufen werden. Das kann beispielsweise bei Slidern und dem ValueChanged-Event passieren wenn man Value im XAML setzt.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Johutha Mittwoch, 18. Mai 2016 16:05
    Mittwoch, 18. Mai 2016 15:45
    Moderator
  • Hi,
    ich vermute, dass Du nicht an allen erforderlichen Stellen den Klassennamen geändert hast. Nach allen Änderungen solltest Du auch Clean ausführen.

    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Kommas richtig setzen!
    Schüler sagen, Lehrer haben es gut.
    Schüler, sagen Lehrer, haben es gut

    Mittwoch, 18. Mai 2016 16:02
  • Hallo Johutha,

    einige kleine Anleitungen zum Debuggen, die man gelesen haben sollte:

    Navigieren im Code mit dem Debugger

    und für Ausnahmen: Verwalten von Ausnahmen mit dem Debugger.

    Gruß Elmar

    Mittwoch, 18. Mai 2016 16:03
    Beantworter
  • Hallo,

    Danke für die Antwort. Du hattest recht, ich habe bei einer Checkbox mit einem Checked-Ereignis im XAML-Code IsChecked auf true gestellt.

    Vielen Dank

    Johutha


    • Bearbeitet Johutha Mittwoch, 18. Mai 2016 16:25
    Mittwoch, 18. Mai 2016 16:25