[英]Json to C# object display in Windows Phone's ListBox
我使用http://json2csharp.com从下面的JSON字符串生成C#类。
{
"stationArr":[
{
"id":"9",
"name":"name9",
"sidebar":{
"original":"http://myurl.com/station_images/5/5_s.png",
"m":"http://myurl.com/station_images/5/m/5_s_m.png",
"s":"http://myurl.com/station_images/5/s/5_s_s.png"
}
},
{
"id":"3",
"name":"name3",
"sidebar":{
"original":"http://myurl.com/station_images/5/5_s.png",
"m":"http://myurl.com/station_images/5/m/5_s_m.png",
"s":"http://myurl.com/station_images/5/s/5_s_s.png"
}
]
"stationUrlMap":{
"9":"http://myurl.com/9_64",
"3":"http://myurl.com/3_64",
}
}
生成的类是(我为每个类创建了不同的.cs。
public class Sidebar
{
public string original { get; set; }
public string m { get; set; }
public string s { get; set; }
}
public class StationArr
{
public string id { get; set; }
public string name { get; set; }
public Sidebar sidebar { get; set; }
}
/*public class StationUrlMap
{
public string __invalid_name__9 { get; set; }
public string __invalid_name__3 { get; set; }
}
*/
public class StationList
{
public List<StationArr> stationArr { get; set; }
// public StationUrlMap stationUrlMap { get; set; } Dicarded it
}
由于不需要,我已经丢弃了StationUrlMap。
我正在使用以下代码创建对象
string resultString = sd.ReadToEnd();
StationList stations = JsonConvert.DeserializeObject<StationList>(resultString);
Debug.Writeline(stations.stationArr.Count); // gives Output 9 Which is correct.
我只是不知道如何在UI中显示电台列表(使用ListBox)。 请指引我正确的方向。
在XAML中创建一个列表框
<ListBox x:Name="ListBoxStations" Height="500" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="450">
<Image Source="{Binding Path=sidebar.original}"/>
<TextBlock Text="{Binding Path=name}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
然后在您的cs文件中,在json转换后执行以下操作
StationList stations = JsonConvert.DeserializeObject<StationList>(resultString);
ListBoxStations.ItemsSource = stations.stationArr;
上面的XAML代码只是一个示例,可以根据您的要求进行更改。
有两种方法。
首先,您可以将列表框的ItemSource属性设置为刚创建的列表。
其次,您可以在列表中创建事物的ObservableCollection ,并将observable集合绑定到列表框的ItemSource属性。 在Observable Collection中添加项目,这些项目将显示在您的列表框中。
第二种方法使您可以更好地控制lisbox中的项目。 您可以在可观察的集合中删除或添加元素,这些元素将反映在列表框的内容中。 第一种方法将使列表的内容为只读,并且您将无法在列表中添加或删除项目。
http://msdn.microsoft.com/en-us/library/ms668604.aspx
http://msdn.microsoft.com/zh-cn/library/system.windows.controls.listbox%28v=vs.95%29.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.