Ich habe mir in der letzten Stunde die Haare über dieses Problem gerissen.
Ich habe einen Code, der so lautet:
%Vor%Wenn ich meinen Code ausführe, wird eine NullReferenceException ausgelöst. Weder "Musik" noch die Rückgabe von GetHbitmap () sind null.
Ich versuche, das Bild über die Eigenschaften zu erhalten, weil es die einzige Möglichkeit ist, wie ich auf die Bilder in meinem Resources-Ordner zugreifen kann. Ich würde sie nur zur app.xaml-Datei als Ressource hinzufügen, aber ich verwende keine app.xaml-Datei aus ein paar Gründen.
Versuche ich das falsch? Alles, was ich tun muss, ist ein ImageSource-Objekt eines Bildes, das ich in meinem Resource-Verzeichnis habe. Ich kann sie gut in meinem XAML verwenden, aber ich kann es nicht für mein Leben in irgendeinem Code tun.
P.S .: Ich kann sie nicht einfach als Ressource zur XAML-Datei hinzufügen, da dies nur eine Klasse ist und daher keine XAML-Datei vorhanden ist.
Nun, du hast viele Dinge, die darin null sein könnten. Ich schlage vor, Sie trennen sie aus:
%Vor% Beachten Sie hier die Verwendung eines Cast- statt des as
-Operators. Wenn source
nicht ist und ImageSource
, wird ein InvalidCastException
geworfen, das viel aussagekräftiger ist, als nur als Null-Referenz zu enden.
EDIT: Okay, jetzt wissen wir sicher, dass es in ConvertFrom
passiert. Ich schlage vor, dass der nächste Schritt darin besteht, herauszufinden, ob es sich um einen Fehler in .NET 4.0 Beta 1 handelt ? Ich schlage vor, dass Sie versuchen, nur dieses Bit Code in ein separates Projekt zu extrahieren (Sie müssen keine API anzeigen, nur das Bild konvertieren. Versuchen Sie, diesen Code in .NET 3.5 auszuführen. Wenn es scheitert auf die gleiche Weise, das hat den Beta-Anteil aus der Liste der möglichen Probleme eliminiert.
Ich treffe genau das gleiche Problem - ich habe alle meine Bitmaps in einer netten, statisch getippten Ressourcendatei und ich möchte nur eine ImageSource mit ihnen setzen. Da der ImageSourceConverter Null-Referenz-Exceptions geworfen hat, habe ich den Tack geändert und stattdessen dieses Stück Code verwendet:
%Vor%Ich hoffe, das hilft.
Versuchen Sie, den Rückgabewert von coDrivr4.Properties.Resources.Music.GetHbitmap()
in eine temporäre Variable zu setzen und festzustellen, ob sie null ist - das könnte der Punkt sein, von dem Ihre Null kommt.