我正在为Windows Phone 7开发一个示例Twitter应用程序。在我的代码中显示用户的一些细节,使用了以下代码。
void ShowProfile()
{
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(Profile_DownloadCompleted);
client.DownloadStringAsync(new Uri("http://api.twitter.com/1/users/show.xml?user_id=" + this.id));
}
void Profile_DownloadCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error != null)
{ return; }
if (e.Result == null) MessageBox.Show("NUlllllllllll");
XElement Profile = XElement.Parse(e.Result);
var ProfileDetails = (from profile in Profile.Descendants("user")
select new UserProfile
{
UserName = profile.Element("screen_name").Value,
ImageSource = profile.Element("profile_image_url").Value,
Location = profile.Element("location").Value,
TweetsCount = profile.Element("statuses_count").Value,
}).FirstOrDefault();
LayoutRoot.DataContext = ProfileDetails;
}
这里,LayoutRoot是网格名称。但数据绑定不起作用。 事实上,当保持一个Break点时,ProfileDetails对象中似乎没有数据。但我可以观察到e.Result包含XML格式的所需数据。 任何身体可以找出我错的地方吗? 提前谢谢。
答案 0 :(得分:2)
您已使用XElement.Parse
,因此Profile
代表API请求返回的单根<user>
。然后,您正在尝试在其中查找user
元素,这当然没有意义。
请尝试使用XDocument.Parse
。当该列表只能包含1个条目时,为数据上下文分配IEnumerable<UserProfile>
是否真的有意义?