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
に1列に追加しています推測。これは正常に動作し、私はすべての3つの項目が表示され、表示されます。
これを分けて見栄えを良くして、を作成して変数をtextblocksにバインドしようとします。以下は、ユーザー名をバインドするだけです。私はまた、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
XAMLはどのように見えますか?コレクションの値が設定されている場合、またはデシリアライズでエラーが発生した場合は、デバッガを使用してチェックします。あなたのコードを適応させた新しいコードスニペットを追加しました。あなたのXAMLは 'UserLeaderboards'クラスのプロパティにバインドする必要があります:' id'、 'username'、' score'。 – Zebi
あなたの助けを借りて、それをソート! – Nathan