我正在制作一个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>
与 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 我发布的内容。