我有一些代码从HTTP服务器读取json响应,然后解析并将数据插入到ListBox
控件中。使用列表框的数据绑定
我关火下载完成后,该事件是:
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
DataContractJsonSerializer ser = null;
try
{
ser =
new DataContractJsonSerializer(typeof(ObservableCollection<UserLeaderboards>));
ObservableCollection<UserLeaderboards> users =
ser.ReadObject(e.Result) as ObservableCollection<UserLeaderboards>;
foreach (UserLeaderboards em in users)
{
int Fid = em.id;
string Fusername = em.username;
int Fscore = em.score;
lstbLeaders.Items.Add(Fid + Fusername + Fscore);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
现在,当我做items.add
我相信它只是加入了3个变量,并在ListBox
它添加到一列。这工作正常,我看到所有3个项目加入并显示。
我想分开这个,让它看起来更漂亮一点,所以我创建了一些XAML
尝试将变量绑定到文本块。以下是绑定用户名。我也有一个公共类,可以获取/设置所有3个变量。
<ListBox Height="346" HorizontalAlignment="Left" Margin="5,221,0,0"
Name="lstbLeaders" VerticalAlignment="Top" Width="446">
<DataTemplate>
<TextBlock Text="{Binding Source=Fusername}" />
</DataTemplate>
</ListBox>
当运行上述我什么也没有显示。我有一种感觉,这很简单?
谢谢。
我没有理由不直接绑定到列表框,我的知识不是很高的XAML方面的东西。我用一个简单的lstbLeaders.ItemsSource = users编辑了我的项目;根据你的文章保留userview类。我现在每条线都只有00。 – Nathan 2011-05-31 20:03:25
你的XAML是什么样的?检查(使用调试器)集合值是否已设置,或者反序列化是否引入错误。我添加了一个新的代码片段来适应您的代码。你的XAML将不得不绑定到UserLeaderboard类的属性:'id','username','score'。 – Zebi 2011-05-31 20:37:29
这是谁排序,感谢您的帮助! – Nathan 2011-05-31 22:04:06