0

WP7アプリを作成し、jsonとしてwebapiからデータを取得しています。どうすればデータバインドできますか?具体的なクラスを作成する必要がありますか、それともJArrayを使用できますか?

[{"Id":"fe480d76-deac-47dd-af03-d5fd524f4086","Name":"SunFlower Seeds","Brand":"PC"}]

  JArray jsonObj = JArray.Parse(response.Content);
   this.listBox.ItemsSource = jsonObj;


        <ListBox x:Name="listBox" FontSize="26" Margin="0,67,0,0">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Id}" Width="100"/>
                        <TextBlock Text="{Binding Brand}" Width="100"/>
                        <TextBlock Text="{Binding Name}" Width="100"/>
                    </StackPanel>

                </DataTemplate>

            </ListBox.ItemTemplate>

        </ListBox>
4

1 に答える 1

1

WPFでバインドする場合は、プロパティを使用する必要があります。強く型付けされたオブジェクトを作成してから、JSONを逆シリアル化します。

オブジェクトを作成します。

public class MyObject
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string Brand { get; set; }
}

リストボックスのItemsSourceを設定することをどのように示したかに基づいた、非常に緩いバインディングの例を次に示します。

string json = "[{\"Id\":\"fe480d76-deac-47dd-af03-d5fd524f4086\",\"Name\":\"SunFlower Seeds\",\"Brand\":\"PC\"}]";

var jsonObj = JArray.Parse( json );

var myObjects = jsonObj.Select( x => JsonConvert.DeserializeObject<MyObject>( x.ToString() ) );

this.listBox.ItemsSource = myObjects;

注:私はjson.netを使用したことがないので、私が投稿したものよりもjson.netを使用して配列を逆シリアル化するためのより良い方法があるかもしれません。

于 2013-01-26T21:01:11.103 に答える