2010-04-26 27 views
0

J'ai un projet où je charge l'image relative Uri à partir d'un fichier xml. Je suis chargement de l'image comme ceci:Comment obtenir l'image de l'URL relative en C#, l'image ne peut pas être dans le projet

if (child.Name == "photo" && 
    child.Attributes["href"] != null && 
    File.Exists(child.Attributes["href"].Value)) 
{ 
    Image image = new Image(); 
    image.Source = new BitmapImage(new Uri(child.Attributes["href"].Value, UriKind.RelativeOrAbsolute)); 
    images.Add(image); 
} 

Lorsque l'objet « enfant » est un XmlNode qui pourrait se présente comme suit

<photo name="info" href="Resources\Content\test.png"/> 

Au cours de déboguer seemd images est rempli d'images réelles, mais quand Je veux les voir de quelque façon que cela ne montre rien. Chose étrange, lorsque j'inclus les images dans mon projet, cela fonctionne, mais je ne veux pas faire cela puisque mon point pour l'utilisation d'un fichier xml est de sorte qu'il serait perdu puisque vous auriez à reconstruire le programme de toute façon après un changement.

+0

Essayez le préfixe ~ \ dans votre chemin. Il devrait prendre relative du répertoire de votre application – IsmailS

+0

Ne semble pas fonctionner, si j'ajoute cette partie le fichier.Exists ne retournera plus vrai. –

Répondre

1

pas la solution parfaite, mais ses œuvres néanmoins, je convertir Uri par rapport à ceux de absolus comme celui-ci

if (child.Name == "photo" && 
    child.Attributes["href"] != null && 
    File.Exists(Environment.CurrentDirectory + child.Attributes["href"].Value)) 
{ 
    Image image = new Image(); 
    image.Source = new BitmapImage(new Uri(Environment.CurrentDirectory + child.Attributes["href"].Value, UriKind.RelativeOrAbsolute)); 
    images.Add(image); 
} 

seulement ont dû changer tous les Uri dans le fichier XML d'avoir une barre oblique.

0

Hmm peut être ce problème de dossier actuel simple. VS vérifiez les ressources sous projet/Ressources/Contenu/répertoire et vérifiez les ressources sous projet/bin/Debug/Resources/Content/folder.

+0

Le dossier ressources est copié dans le dossier de débogage, la partie étrange est, j'utilise File.Exists pour voir si elle existe, ce qui renvoie la valeur true. –

+0

Hmm problème doit être dans uri. –