2010-08-13 5 views
2

Je travaille sur un outil qui rend des morceaux de XAML aux images. Le XAML est utilisé comme modèle pour concevoir les images. En raison de la façon dont le rendu fonctionne, il n'est pas possible d'utiliser un codebehind. Rendu juste xaml n'est pas un problème.Rendu XAML avec des images à distance

Dans l'un de mes modèles, je souhaite donner un rendu lat/long au rendu et inclure une image provenant de Google Maps, parmi d'autres images stockées sur le Web. Le XAML est rendu, mais les images ne sont pas incluses. Je suppose que cela doit faire quelque chose avec le retard du téléchargement des images.

Un modèle ressemblerait à quelque chose comme:

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Border CornerRadius="10" Background ="#FF123456" > 
    <Image Source="{0}" Width="250" Height="150"/> 
    </Border> 
</UserControl> 

J'utilise un string.Format pour ajouter l'URL au modèle.

Est-ce que quelqu'un sait comment je peux rendre XAML avec des images à distance?

Répondre

0

J'ai trouvé une solution de contournement. Comme les images locales fonctionnent dans le rendu, j'ai décidé d'utiliser des images temporaires. Avant de rendre le morceau de XAML, je télécharge l'image, l'enregistre sur le disque et utilise ce chemin comme source de l'image.

Cette méthode ressemble à quelque chose comme:

public string GetGoogleMapsImage(string lat, string lng, string path) 
{ 
    string googleMapsImage = 
     string.Format(
      "http://maps.google.com/maps/api/staticmap?center={0},{1}&zoom=8&size=250x150&sensor=false" , lat, lng); 
    string returnpath; 
    using (var w = new WebClient()) 
    { 
     var gm = w.DownloadData(googleMapsImage); 
     returnpath = path + "\\~googletemp" + DateTime.Now.Ticks + ".png"; 
     File.WriteAllBytes(returnpath, gm); 
     return returnpath; 
    } 
} 
Questions connexes