2010-04-18 5 views
9

Ich habe ein Bild lock.png neben meiner WPF exe-Datei im Ordner images. Nun, ich werde Last in das WPF-Projekt als ein Bild habe ich den folgenden XAML-Code verwendet:Laden eines externen Bildes über XAML-Code in WPF?

<Image Stretch="Fill" Source="pack://siteoforigin:,,,/images/lock.png" /> 

Es funktioniert, aber Expression Blend oder Visual Studio es nicht zeigen, wenn ich arbeite An dem Projekt.
Wie können wir in diesen Situationen externe Bilder zeigen?

Antwort

-1

Ist Ihre primäre IDE Visual Studio? Wenn ja, warum das manuell? Im Propitities Fenster können Sie einfach den Weg zum Bild suchen, das Sie mit Ihrer Bildkomponente verwenden möchten

+0

Das Bild, das ich verwendet habe, ist ein externes Bild und es ist nicht in 'Eigenschaften'. –

+0

Vielleicht würde es Ihnen helfen, es in Visual Studio Projektlösung hinzuzufügen. Oder willst du nicht? Gibt es einen Zweck, der "extern" bleiben muss? – Xorty

+0

Ich möchte externe Bilder verwenden, weil ich sie einfach ändern möchte, wann immer ich will und ohne die Codes zu ändern. Ich möchte auch das Volumen der EXE-Datei reduzieren. –

4

Versuchen Sie, Ihr Bild dynamisch zu laden. Dies sollte auf xaml sein:

<Image Stretch="Fill" Name="MyImage" /> 

Und dies in Code hinter. Auf Window_Loaded oder in Fensterbauer:

if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + "images/lock.png")) 
      { 
       Uri uri = new Uri(AppDomain.CurrentDomain.BaseDirectory + "images/lock.png", UriKind.RelativeOrAbsolute); 
       MyImage.Source = BitmapFrame.Create(uri); 
      } 
+0

Danke, aber ich wollte es nicht. Außerdem, wenn Sie Ihren Code getestet, könnten Sie sehen dass Ihre Lösung nicht für das Problem funktioniert –

+0

Es funktioniert möglicherweise nicht für dieses Problem, aber es löste mein Problem des Ladens externer Bilder dynamisch ... Das CurrentDomain.BaseDirectory hat den Trick für mich !!! – Loudenvier

1

Wenn das Bild zu Ihrer EXE Lage relativ tut nur

<Image Source="Images\lock.png" /> 

Wenn das Bild nicht relativ ist, dann Sie ein größeres Problem haben. Pack-Syntax ist nur nützlich, wenn Sie die Ressource tatsächlich in Ihre Assembly "packen".

Das Problem mit losen Bildern und Blend ist, dass Blend Ihre EXE in einem Temp-Verzeichnis hostet, das sie kontrolliert und nach Bildern in Bezug auf dieses Temp-Verzeichnis sucht, die alle Pfade, auf die Sie angewiesen sind, korrigieren.

+0

Danke Freund, so Wenn ich ein externes Bild verwenden möchte, kann ich nicht in der Entwicklungszeit daran arbeiten? Ist es richtig? –

+0

Funktioniert die Lösung, die ich geschrieben habe, nicht für relative URIs, andernfalls sollte ein voll qualifizierter URI funktionieren. –

+0

Ihre Lösung ist für Situationen, in denen wir ein Bild in das Projekt eingefügt haben, in meinem Fall möchte ich das Bild nicht in das Projekt einfügen –

4

Verwenden Format wie: Projekt; component/ImagePath

z.B.

<Image Source="ImageDemo;component/Images/ISIBAR.png" Name="custLogo"/> 

Wo ist der Imagedemo Projektname, Bild/ISIBAR.png ist der Weg nach innen Projekt

0

I gleiche Frage hatte.

Stellen Sie sicher, dass die Bild-Build-Aktion auf Ressource eingestellt ist. (Rechtsklick auf ein Bild, und dann gehen Sie zu Eigenschaften, setzen Aktion bauen Ressourcen)

Auch anstelle von siteoforigin Verwendung Beantragungsbehörde

Quelle: https://stackoverflow.com/a/18175145/2672788

0

Es ist sehr einfach, Ihre Das Bild wird nicht angezeigt, da es von der Anwendung nicht gelesen wird, nachdem Sie es ausgeführt haben.

Eine schnelle Möglichkeit, dies zu umgehen, ist das manuelle Löschen des Abbilds aus dem physischen Ordner in den Ordner in der Anwendung. Sobald es da ist, kann die Anwendung es lesen.

0

könnte einfacher sein:

<Image x:Name="ImageObject" Source="file:///C:\\1.jpg"/> 

die Schrägstriche Erinnern Sie sich!

Verwandte Themen