31 votes

WPF - L'image "ne fait pas partie du projet ou son action de construction n'est pas définie comme une ressource".

J'ai un projet qui nécessite une image dans la fenêtre. Il s'agit d'une image statique que j'ai ajoutée via 'Add>Existing Item'. Elle existe dans la racine du projet.

Je fais référence à l'image dans une page de test comme suit -

<Page x:Class="Critter.Pages.Test"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="Test">
      <Image Source="bug.png"/>
</Page>

Le problème est que je reçois un message disant qu'il ne peut pas être trouvé ou que son action de construction n'est pas une ressource, mais il existe bien et son action de construction EST une ressource. Si je crée une nouvelle application et que je la lance dans une fenêtre, elle fonctionne bien.

Toute aide serait la bienvenue.

0 votes

L'image se trouve-t-elle dans un sous-dossier ?

0 votes

Non. L'image est dans le Root du projet.

0 votes

L'action de construction est-elle définie comme une ressource ou une ressource intégrée ?

2voto

Il ne le fait pas, ou du moins la version bêta actuelle ne le fait pas. J'ai trouvé cette page en cherchant exactement le même problème. Reconstruire/nettoyer n'a rien fait. Après avoir fermé et rechargé la solution, le fichier est redevenu compatible comme par magie.

2voto

P_Fitz Points 77

J'ai rencontré exactement le même problème mais redémarrer VS2008 ou nettoyer et reconstruire le projet n'a pas fonctionné pour moi. En fin de compte, les étapes ci-dessous ont fait l'affaire.

  • Dans l'Explorateur Windows, copiez l'image dans le dossier de ressources de votre projet. Exemple : MonProjet \Resources\
  • Dans Visual Studio, cliquez avec le bouton droit de la souris sur les ressources et sélectionnez "Ajouter > Élément existant", puis sélectionnez l'image que vous venez de copier.
  • Dans le formulaire XAML, définissez la source de l'image comme suit : "Source="Resources/MyImage.ico" (mon image a été enregistrée sous forme de fichier icône (.ico), mais cette approche devrait fonctionner pour tout type d'image)

J'espère que cela aidera quelqu'un

1voto

pigleg Points 11

Exemple de chargement asynchrone, une autre option. L'exemple clip.mp4 est dans le projet web Root.

void Landing_Loaded(object sender, RoutedEventArgs e)
{
    //Load video async

    Uri pageUri = HtmlPage.Document.DocumentUri;
    Uri videoUri = new UriBuilder(pageUri.Scheme, pageUri.Host, pageUri.Port, "clip.mp4").Uri;           

    WebClient webClient = new WebClient();
    webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
    webClient.OpenReadAsync(videoUri);
}

void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    byte[] VideoBuffer = new byte[e.Result.Length];
    e.Result.Read(VideoBuffer, 0, (int)e.Result.Length);
    MemoryStream videoStream = new MemoryStream(VideoBuffer);
    ContentVideo.SetSource(videoStream);
    ContentVideo.Stop();
    ContentVideo.Play();
}

1voto

andol Points 11

Cela résout exactement le problème, le redémarrage de vs 2008. j'espère qu'il y aura le développement d'un patch au moins pour résoudre ce problème.

0voto

JnuO Points 16

J'ai eu un problème similaire. Après avoir supprimé un someStyle.xaml que je n'utilisais pas vraiment à partir de l'explorateur de solutions. J'ai ensuite restauré le fichier, mais aucun changement ne s'est produit. Le nettoyage et la reconstruction du projet n'ont pas aidé.

Il suffit de supprimer la ligne correspondante :

<ResourceDictionary Source="someStyle.xaml"/> 

a fait l'affaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X