无法在带有URI源的Silverlight中显示图像

本文关键字:Silverlight 显示 显示图 图像 源的 URI | 更新日期: 2023-09-27 17:50:42

你好,我想学习Silverlight。所以我买了Silverlight 4的动作手册。第一款"Hello World"应用就把我难住了。这是一个小应用程序,可以在twitter上搜索silverlight上的帖子,然后将它们显示在列表框中。我试图从对象绑定一个URI,以加载列表框中项目的图像。这不起作用,所以我尝试了一个静态URI。这不起作用,所以我尝试制作一个基本图像,并将XAML中的源设置为静态URI。这显示了VS2010预览窗口中的图像,但当我试图调试时仍然没有图像。所以我想可能有什么奇怪的事情阻止了silverlight访问外部uri,但我很快意识到这没有任何意义,因为它成功地从twitter获取了信息。有人知道是什么导致了这个问题吗?谢谢!

在XAML

   <ListBox x:Name="TweetList"
             HorizontalContentAlignment="Stretch"
             ScrollViewer.HorizontalScrollBarVisibility="Disabled"
             Margin="12 41 12 12">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid Margin="10">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="auto"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Image Source="{Binding Image}"
                           Grid.Column="0"
                           Margin="3"
                           Width="50"
                           Height="50"
                           Stretch="UniformToFill"/>
                    <TextBlock Text="{Binding Message}"
                               FontSize="14"
                               Margin="3"
                               Grid.Column="1"
                               TextWrapping="Wrap"/>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
c#

public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
        TweetList.ItemsSource = _tweets;
    }
    private ObservableCollection<Tweet> _tweets =
        new ObservableCollection<Tweet>();
    private void GetTweets_Click(object sender, RoutedEventArgs e)
    {
        WebClient client = new WebClient();
        client.DownloadStringCompleted += (s, ea) =>
            {
                XDocument doc = XDocument.Parse(ea.Result);
                XNamespace ns = "http://www.w3.org/2005/Atom";
                var items = from item in doc.Descendants(ns + "entry")
                            select new Tweet()
                            {
                                Message = item.Element(ns + "title").Value,
                                Image = new Uri((
                                    from XElement xe in item.Descendants(ns + "link")
                                    where xe.Attribute("type").Value == "image/png"
                                    select xe.Attribute("href").Value
                                    ).First<string>()),
                            };
                foreach (Tweet t in items)
                {
                    _tweets.Add(t);
                    System.Diagnostics.Debug.WriteLine(t.Image.ToString());
                }
            };
        client.DownloadStringAsync(new Uri("http://search.twitter.com/search.atom?q=silverlight"));
    }
}

无法在带有URI源的Silverlight中显示图像

直接检查地址,如Image = new Uri("http://a0.twimg.com/profile_images/482914861/fastcompanyred100_normal.jpg")
如果成功,则可能是您试图构建的uri字符串有问题