Tôi có một chút mã đọc phản hồi json từ máy chủ HTTP, sau đó phân tích cú pháp này và chèn dữ liệu vào điều khiển ListBox
.Databinding with a Listbox
Sự kiện này tôi bắn ra khi quá trình download hoàn tất như sau:
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);
}
}
Bây giờ, khi tôi làm items.add
Tôi đoán nó chỉ tham gia lên 3 biến và thêm nó vào một cột trong ListBox
. Điều này hoạt động tốt và tôi thấy tất cả 3 mục đã tham gia và hiển thị.
Tôi muốn tách riêng phần này và làm cho nó đẹp hơn một chút vì vậy tôi đã tạo một số XAML
để thử và liên kết các biến với textblocks. Sau đây chỉ là ràng buộc tên người dùng. Tôi cũng có một lớp công khai nhận/đặt tất cả 3 biến.
<ListBox Height="346" HorizontalAlignment="Left" Margin="5,221,0,0"
Name="lstbLeaders" VerticalAlignment="Top" Width="446">
<DataTemplate>
<TextBlock Text="{Binding Source=Fusername}" />
</DataTemplate>
</ListBox>
Khi chạy ở trên, tôi hoàn toàn không thấy gì cả. Tôi có cảm giác nó đơn giản?
Cảm ơn.
không có lý do gì để tôi không liên kết trực tiếp với hộp danh sách, kiến thức của tôi không cao về phía XAML của mọi thứ. Tôi đã chỉnh sửa dự án của mình với một người dùng lstbLeaders.ItemsSource = đơn giản; Giữ lớp userview theo bài viết của bạn. Tôi bây giờ chỉ nhận được 00 trên mỗi dòng. – Nathan
XAML của bạn trông như thế nào? Kiểm tra (bằng cách sử dụng trình gỡ rối) nếu các giá trị bộ sưu tập được đặt hoặc nếu quá trình deserializing đưa ra lỗi. Tôi đã thêm một đoạn mã mới vào câu trả lời của tôi, điều chỉnh mã của bạn. XAML của bạn sẽ phải liên kết với các thuộc tính của lớp 'UserLeaderboards' ngay bây giờ:' id', 'username',' score'. – Zebi
thats sắp xếp nó, nhờ sự giúp đỡ của bạn !! – Nathan