Json 到 C# 对象显示在 Windows Phone 的列表框中



我使用 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 属性设置为刚创建的列表。

其次,可以在列表中创建事物的可观察集合,并将该可观察集合绑定到列表框的 ItemSource 属性。在"可观察集合"中添加项,这些项将显示在列表框中。

第二种方式使您可以更好地控制lisbox中的项目。您可以删除或添加可观察集合中的元素,这些元素将反映在列表框内容中。第一种方法将使列表的内容成为只读,您将无法在其中添加或删除项目。

http://msdn.microsoft.com/en-us/library/ms668604.aspx

http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox%28v=vs.95%29.aspx

相关内容

  • 没有找到相关文章

最新更新