Lösung: PNGs werden in Silverlight nicht angezeigt

Bild von Daniel Greitens

Immer wieder ist es mir passiert, dass png-Bilder in Silverlight nicht angezeigt werden. Das abstruse: Die einen ja, die anderen nicht. Und das, obwohl alles gleich war (Bild-Format, Interlacing, Einbindung, Kompilierungseinstellungen,...).

Geht:

public static BitmapImage GetWinnerIcon() {
Uri u = new Uri("Images/2000-ok.png", UriKind.Relative);
return new BitmapImage(u);
}

Geht nicht:

public static BitmapImage GetLooserIcon() {
Uri u = new Uri("Images/cancel.png", UriKind.Relative);
return new BitmapImage(u);
}

Interessanterweise wirft die relative Uri eine Exception, aber nur, wenn ein Breakpoint gesetzt wurde.

Die einzige Lösung, die ich erreichen konnte:
Das Bildmaterial unter den Kompilierungseigenschaften in Visual Studio als "Content" einstellen, und in dem Verweis einen Slash voranstellen:

Geht:

public static BitmapImage GetLooserIcon() {
Uri u = new Uri("/Images/cancel.png", UriKind.Relative);
return new BitmapImage(u);
}

Ein Workaround, aber er geht.

Kommentare

Das ist Normal. Code wird

Das ist Normal. Code wird auch nur kompiliert, wenn für ihn die Build Action "Compile" eingestellt ist. Bilder werden nur als Bilder eingebunden und sind als Bilder verwendbar wenn man aus innen Ressourcen macht oder sie als Content einbindet.

Das ist nicht abstrus.