2008-11-10 14 views
6

Ich versuche, dies zu tun ...In WPF wie gebe ich den Pfad zu einer Datei in einem Verzeichnis mit XAML verschachtelt?

<Image x:Name="imgGroupImage" Source="Images\unlock.png" Margin="0,0,5,0" /> 

Aber ich diesen Fehler ...

Zeichenfolge 'Images \ unlock.png' in Attribut 'Quelle' zu Kann nicht konvertieren Aufgabe Geben Sie "System.Windows.Media.ImageSource" ein. Die Ressource 'forms/images/unlock.png' kann nicht gefunden werden. Fehler beim Objekt 'System.Windows.HierarchicalDataTemplate' in Markup-Datei 'Fuse; Komponente/forms/MainWindow.xaml' Linie 273 Position 51.

Wie Sie meine Form sehen kann, dass dieser XAML enthält, ist in einem Ordner benannte Formulare. Meine Bilder befinden sich in einem Ordner namens Bilder. Wie mappe ich von Formularen zu Bildern?

Ich versuchte Source="..Images\unlock.png", die nicht in WPF funktioniert.

Irgendwelche Hilfe?

Antwort

9

Try Schrägstriche statt Schrägstriche, und verwenden Sie einen absoluten Pfad mit einem Schrägstrich von führenden:

Source="/Images/unlock.png" 

, die im Allgemeinen für mich funktioniert.

Wenn das nicht klappt, werfen Sie einen Blick auf Pack URIs.

+1

DOH! Das war zu einfach. Vielen Dank! – Doug

+0

Der Pack URI-Link funktioniert nicht für mich. Dies ist ein Äquivalent: https://msdn.microsoft.com/de-de/library/vstudio/aa970069 (v = vs.100) .aspx –

0

Haben Sie versucht, die Quelle auf BitmapImage einzustellen?

<Image x:Name="imgGroupImage" Margin="0,0,5,0" > 
    <Image.Source> 
     <BitmapImage UriSource="Images/unlock.png" /> 
    </Image.Source> 
</Image> 

glaube ich, der Standardtyp von Uri für UriSource ist eine relative Uri, die die Anwendung der Basisklasse abarbeitet. Sie könnten feststellen, dass Sie die etwas einfacher konfigurieren können, als zu versuchen, die genaue Art und Weise zu finden, wie Sie den Dateipfad im Attribut Source eingeben müssen.

5
  1. Fügen Sie Ihr Bild zu dem Projekt in VS
  2. Rechtsklick auf diesem Bild unlock.png
  3. Zum Kontextmenü/Eigenschaften
  4. ändern Build Action auf Resource

Das ist es :-)

0

Um Ressource zu verwenden, die sich in einem anderen Ordner befindet die, wo Sie Ihre XAML ist, dies zu tun:

<Image Source="pack://application:,,,/Resources/image.png"/> 

Wo Ressourcen Name eines Verzeichnisses von dem aus verwenden, um Ressourcen wollen und image.png ist Name des Bildes angezeigt werden soll. Antwort gefunden dank @ Matt-Hamilton und @ Brian-Hinchey und ihrer Erwähnung von Pack URI.
Funktioniert perfekt mit Ihren eigenen Konvertern. Sie müssen nur das obige String-Matching-Schema zurückgeben.