Howto vermeiden Sie eine "object reference not set to an instance of an object" exception in XAML-code, der während der design-Zeit?
Ich habe ein problem mit wpf-usercontrol, das ist meine eigene Ausarbeitung.
Das problem ist, dass ich eine object reference not set to an instance of an object
Ausnahme im XAML-code während der design-Zeit, als ich implementieren Sie das Benutzersteuerelement in meinem Programm.
Wie kann ich das beheben oder unterdrücken die Ausnahme?
BEARBEITEN 1
Designer zeigen Sie mir folgende Informationen:
in
Microsoft.Ausdruck.- Plattform.InstanceBuilders.InstanceBuilderOperations.InstantiateType(Typ
Typ Boolean supportInternal) bei
Microsoft.Ausdruck.- Plattform.InstanceBuilders.ClrObjectInstanceBuilder.InstantiateTargetType(IInstanceBuilderContext
Kontext, ViewNode viewNode) bei
Microsoft.Ausdruck.- Plattform.InstanceBuilders.ClrObjectInstanceBuilder.Instanziieren(IInstanceBuilderContext
Kontext, ViewNode viewNode) bei
Microsoft.Ausdruck.WpfPlatform.InstanceBuilders.FrameworkElementInstanceBuilder.Instanziieren(IInstanceBuilderContext
Kontext, ViewNode viewNode) bei
Microsoft.Ausdruck.WpfPlatform.InstanceBuilders.UserControlInstanceBuilder.Instanziieren(IInstanceBuilderContext
Kontext, ViewNode viewNode) bei
Microsoft.Ausdruck.- Plattform.InstanceBuilders.ViewNodeManager.CreateInstance(IInstanceBuilder
generator, ViewNode viewNode)
Ich denke, Sie sind nicht wirklich hilfreich...
- Der designer sollte zeigen Sie den stack-trace des Fehlers - wo ist der Fehler tatsächlich Auftritt?
- Bitte poste den Teil des Codes, der den Fehler auslöst. Es ist wirklich schwer die Frage zu beantworten, die sich mit den Informationen
- möglich, Duplikat der WPF, 'Objektverweis nicht auf eine Instanz eines Objekts', die in Designer
- ich kenne ja die andere Frage, aber nicht jeder der descriped Lösungen, die mein problem lösen. Ich lese die andere Frage, bevor ich diese Fragen ein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie "Objektverweis nicht auf eine Instanz eines Objekts' in XAML, aber Ihre Anwendung kompiliert und läuft einwandfrei, Sie in der Regel finden heraus, dass Ihre Ursache ist etwas in einem Konstruktor, der nicht aufgelöst werden können zur design-Zeit.
Klicken Sie einfach auf den "Deaktivieren Projekt-code" - Taste auf der Unterseite Ihrer Ansicht-designer und Visual Studio-designer werden aufhören zu versuchen, erstellen Sie eine Instanz, design-time-Daten anzeigen.
Sehen hier für detaillierte Informationen und screenshots.
Disable project code
gearbeitet..Was auch immer geschieht, in der der Konstruktor wirft eine exception während der design-Zeit. Ich hatte dasselbe problem - ich habe nur ein try-catch um den problematischen code - in meinem Fall war ich aufrufen ServiceLocator.Aktuell bin ich mit einem IoC-container. Aber es gibt kein container, die während der design-Zeit. So wickelte ich in ein try-catch-zu unterdrücken, den Fehler und es funktionierte. Nicht die beste Lösung... aber eine Lösung.
Ich Neige dazu, verwenden Sie die
LicenseManager
KlasseSystem.ComponentModel
zu vermeiden, meine ViewModels werfen fiesen Fehler, die zur designzeit. Zum Beispiel:Tweaking @BobHorn Beispiel, ich habe diese für mich arbeiten:
Aber mit seinen genauen Vorschlag für den Konstruktor
Haben auch Arbeit für mich, ich lieber nicht kurzschließen meine Methoden mit zusätzlichen return-Anweisungen. Ich hätte bis-abgestimmt auf seine Antwort, nicht die rep noch.
Könnte man etwas wie das hier tun:
Dann, wie die erste Zeile in den Konstruktor deiner Sicht (oder view-Modell), können Sie etwas wie das hier tun:
Diese Weise Ihren code nur ausgeführt wird, wenn Sie tatsächlich läuft es.
Ich hatte das ähnliche problem. Sie müssen nur auf Extras> Optionen> XAML-Designer und aktivieren Sie die option
Schließlich starten Sie Visual Studio neu. Ich hoffe, das wird helfen.
VS 2017 UWP:
In Sie "partial class" von XAML, wenn Sie sehen können,"
[XamlCompilation(XamlCompilationOptions.Compile)]
",entfernen Sie einfach die Zeile, und versuchen Sie dann erneut erstellen.
Wenn jemand hier her kommt, ich hatte versehentlich zog meinen MainWindow.xaml-Datei zu einem Unterordner. Ziehen Sie es zurück, das problem wurde behoben.
Wenn Sie ein WIndow/UserControl im designer es "läuft" der parameterlose Konstruktor.
Wenn Sie code in die man angewiesen auf etwas, das gewöhnlich von einige andere Stück code, dann ist dies oft ein problem verursacht.
Der designer läuft nicht anderen code, der zuerst damit Abhängigkeiten in der Regel an anderer Stelle fehlen und Fehler verursachen.
Die Unterdrückung dieser, ist eine Frage, die erkennen, ob code ausgeführt wird, in den designer oder nicht.
Oft ist es am bequemsten, gerade zurück aus dem Konstruktor:
Mehr im detail https://social.technet.microsoft.com/wiki/contents/articles/29874.aspx?Redirected=true