最近,我的问题here被回答了。现在我已经对XML进行了分析,并且看起来很漂亮,我还有一个关于我的应用程序的问题,在过去的几天里,我一直把头撞在墙上。
XML用于自动将艺术家名称添加到列表框中。我想做的是提供从这些艺术家到亚马逊搜索的链接。在下面的函数中,将解析XML,然后将艺术家名称添加到列表中。我需要在这个艺术家的名字上加一个超链接。有人知道这怎么可能吗?
编辑:,我缺少了所提供的答案中步骤2和步骤3之间的连接。另外,我完全不明白数字3是如何工作的。我必须承认我是Silverlight编程的新手。根据我的理解,您可以在XAML页面中进行绑定。对于尚未创建的列表框项,如何做到这一点?
此外,我还意识到Amazon使用+标志,空间在艺术家的名字中。我编辑了代码以反映这一点。请理解,在每个艺术家的名字下有超链接作为文本不是我要追求的。;)
public void DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null || e.Error.Message.IndexOf("NotFound") == -1)
{
ArtistsList.Items.Clear();
uname.Text = "Try Another One!";
XDocument doc = XDocument.Parse(e.Result);
var topArtists = from results in doc.Descendants("artist")
select results.Element("name").Value.ToString();
foreach (string artist in topArtists)
{
ArtistsList.Items.Add(artist);
string amazonPlus = artist.Replace(" ", "+");
string amazonURL = "http://www.amazon.ca/s/ref=nb_ss_gw?url=search-alias%3Daps&field-keywords=" + amazonPlus + "&x=0&y=0";
ArtistsList.Items.Add(amazonURL);
}
}
} 编辑2有谁能澄清提供的答案吗?
发布于 2009-06-22 05:12:20
1)创建一个具有名称和Amazon属性的艺术家对象
2)解析XML时,使用LINQ创建一组项。
var topArtists = from result in doc.Descendants("artists")
select new Artist
{
Name = result.Element("name").Value,
Amazon = new Uri(string.format("http://amazon.com/artist={0}", result.Element("name").Value), UriKind.Absolute),
};
ArtistList.ItemsSource = topArtists;3)然后使用数据模板将名称绑定到TextBlock文本或HyperlinkButton内容,并将Amazon绑定到HyperlinkButton.NavigateUrl。
https://stackoverflow.com/questions/1025011
复制相似问题