web-dev-qa-db-fra.com

Comment se référer aux ressources incorporées de XAML?

J'ai plusieurs images que je veux être incorporé à l'exe.

Lorsque je configure l'action Build Action sur Ressource incorporée .__, le code indique une erreur indiquant que la ressource n'est pas disponible et me demande de définir l'action Build sur Resource

J'ai essayé plusieurs méthodes différentes:

 <ImageSource x:Key="Image_Background">YearBook;component/Resources/Images/darkaurora.png</ImageSource>

 <ImageSource x:Key="Image_Background">Images/darkaurora.png</ImageSource>

 <ImageSource x:Key="Image_Background">pack://application:,,,/Resources/Images/darkaurora.png</ImageSource>

Ce code se trouve dans un fichier de ressources . Mais aucun n'a fonctionné, ils jettent tous cette erreur:

Cannot convert the string 'pack://application:,,,/Resources/Images/darkaurora.png' into a 'System.Windows.Media.ImageSource' object. Cannot locate resource 'resources/images/darkaurora.png'.  Error at object 'Image_Background' in markup file 'YearBook;component/Resources/ImageResources.xaml' Line 4 Position 6.

Et dans différents endroits du code, je reçois:

the file 'YearBook;component/Resources/Images/shadowdrop.png' is not a part of the project or its 'Build Action' property is not set to 'Resource'

Alors, qu'est-ce que je fais mal?

23
eric.itzhak

Lorsque vous définissez BuildAction à Ressource , il est utilisé comme ressource incorporée dans un assembly. Ou vous pouvez définir BuildAction à Content puis il sera regroupé dans le fichier .xap résultant . Vous pouvez utiliser l’une de ces BuildActions. En définissant BuildAction à Content , vous pouvez accéder à une image telle que: "/Resources/Images/darkaurora.png" (doit commencer par une barre oblique). Et lorsque vous utilisez BuildAction Resource , vous pouvez accéder à l'image en tant que "/YearBook;component/Resources/Images/darkaurora.png" (nom_assemblage; composant/chemin relatif). J'espère que cela aidera.

24
ethicallogics

Définissez l'action de génération sur Ressource et non sur Ressource incorporée 

2
devdigital

ImageSource ne peut pas être instancié. 

public abstract class ImageSource : Animatable, 
IFormattable

Il y a cette petite abstract qui va gâcher votre journée. Votre xaml tente en réalité d’instancier une instance de ImageSource, puis affectez la valeur de l’élément (votre Uri, dans ce cas) à une propriété marquée avec le ContentPropertyAttribute (??) à l’aide du convertisseur pouvant être situé pour convertir la chaîne un objet (encore, ??).

Je pense que vous voulez un BitmapSource

<BitmapImage 
    x:Key="Image_Background" 
    UriSource="/Images/darkaurora.png" />
0
Will