Ich habe zwei .png
Dateien zu meinen Ressourcen hinzugefügt, die ich beim Binden auf ihren Uri zugreifen muss.
Mein xaml
Code ist wie folgt:
und der binding
-Code mit ImagePath ist:
Jedoch
%Vor% gibt Bitmap
anstelle von String
zurück und enthält den Uri dieses bestimmten Bildes.
Ich möchte nur wissen, wie man diesen Wert extrahiert, ohne einen Pfad des Bildes in dem Verzeichnis ansprechen zu müssen, in dem es gespeichert ist. (Um ehrlich zu sein, ich bin mir nicht sicher, ob das richtig ist, da ich im Internet keine ähnliche Situation finden konnte).
Bitte lassen Sie mich wissen, ob es eine bevorzugte Methode zu der, die ich verwenden möchte, wenn verfügbar gibt.
In einer WPF-Anwendung würden Sie normalerweise keine Bilder in Properties/Resources.resx
speichern und mit der Klasse Properties.Resources
darauf zugreifen.
Stattdessen fügen Sie die Bilddateien einfach als reguläre Dateien zu Ihrem Visual Studio-Projekt hinzu, möglicherweise in einem Ordner namens "Images" oder dergleichen. Dann würden Sie ihre Build Action
auf Resource
setzen, was im Eigenschaftenfenster geschieht. Sie kommen dort z.B. indem Sie mit der rechten Maustaste auf die Bilddatei klicken und den Menüpunkt Properties
auswählen. Beachten Sie, dass der Standardwert von Build Action
trotzdem für Bilddateien Resource
sein sollte.
Um auf diese Bildressourcen vom Code aus zuzugreifen, würden Sie dann eine Pack-URI verwenden. Mit dem obigen Ordnernamen "Images" und einer Bilddatei namens "LedGreen.png" würde die Erstellung eines solchen URI wie folgt aussehen:
%Vor%So könnten Sie vielleicht Ihr Eigentum vom Typ Uri erklären:
%Vor%und setze es so:
%Vor%Schließlich sollte Ihr XAML wie unten gezeigt aussehen, was auf einer integrierten Typkonvertierung von Uri nach ImageSource beruht:
%Vor% Deklarieren Sie die Eigenschaft Properties.Resources.LedGreen
als ImageSource
und setzen Sie sie auf den Uri-Speicherort und nicht auf das Bitmap-Objekt.
Oder wenn Sie darauf bestehen, es als Bitmap zu speichern, können Sie die Quelle erhalten, indem Sie Properties.Resources.LedGreen.ImageSource
vom Typ ImageSource
zurückgeben.
Ich würde den ersten Ansatz bevorzugen.