您好我正在尝试学习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"));
}
}
答案 0 :(得分:0)
使用Image = new Uri("http://a0.twimg.com/profile_images/482914861/fastcompanyred100_normal.jpg")
之类的直接uriaddress检查
如果成功,那么您尝试构建的uri字符串可能存在问题