ImageSourceConverter löst eine NullReferenceException ... warum?

8

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.

    
Eric Smith 24.06.2009, 05:00
quelle

5 Antworten

5

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.

    
Jon Skeet 24.06.2009, 05:08
quelle
8

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.

    
AdamCrawford 04.10.2013 10:54
quelle
1

Vor der Verwendung ConvertFrom speichern Sie Ihre Bitmap in MemoryStream

%Vor%     
GMG 13.06.2014 13:10
quelle
1

Dies ist kein Fehler in .net Framework, diese Null-Referenz-Ausnahme tritt auf, weil der ImageSourceConverter ein Bitmap-Objekt nicht konvertieren kann: Stream, string, Uri, byte [], also müssen Sie Ihren Code ändern zu so etwas:

%Vor%

...

%Vor%     
acamro 05.07.2016 09:05
quelle
0

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.

    
Jonathan Rupp 24.06.2009 05:07
quelle

Tags und Links