Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json到Windows Phone'中的C#对象显示;s列表框_C#_Windows Phone 7_Json.net - Fatal编程技术网

Json到Windows Phone'中的C#对象显示;s列表框

Json到Windows Phone'中的C#对象显示;s列表框,c#,windows-phone-7,json.net,C#,Windows Phone 7,Json.net,我曾经用下面的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/

我曾经用下面的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
}
公共类侧栏
{
公共字符串原始{get;set;}
公共字符串m{get;set;}
公共字符串s{get;set;}
}
公共级火车站
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
公共侧边栏侧边栏{get;set;}
}
/*公共类StationUrlMap
{
公共字符串\uuu无效\u名称\uuuu 9{get;set;}
公共字符串\uuu无效\u名称\uuuu 3{get;set;}
}
*/
公共类统计列表
{
公共列表stationArr{get;set;}
//public StationUrlMap StationUrlMap{get;set;}对其进行了排序
}
我已经放弃了车站地图,因为我不需要它

我正在使用以下代码创建对象

string resultString = sd.ReadToEnd();
StationList stations = JsonConvert.DeserializeObject<StationList>(resultString);
Debug.Writeline(stations.stationArr.Count); // gives Output 9 Which is correct.
string resultString=sd.ReadToEnd();
StationList stations=JsonConvert.DeserializeObject(resultString);
Debug.Writeline(stations.stationArr.Count);//给出正确的输出9。
我只是不知道如何在UI中显示电台列表(使用列表框)。请为我指明正确的方向。

有两种方法

首先,可以将listbox的ItemSource属性设置为刚创建的列表

其次,您可以在列表中创建一个ObservableCollection,并将ObservableCollection绑定到listbox的ItemSource属性。在ObservableCollection中添加项目,这些项目将显示在listbox中

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

有两种方法

首先,可以将listbox的ItemSource属性设置为刚创建的列表

其次,您可以在列表中创建一个ObservableCollection,并将ObservableCollection绑定到listbox的ItemSource属性。在ObservableCollection中添加项目,这些项目将显示在listbox中

第二种方法使您能够更好地控制lisbox中的项。您可以在可观察集合中删除或添加元素,这些元素将反映在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;
StationList stations=JsonConvert.DeserializeObject(resultString);
ListBoxStations.ItemsSource=stations.stationArr;

上面的XAML代码只是一个示例,根据您的需求进行更改。

在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;
StationList stations=JsonConvert.DeserializeObject(resultString);
ListBoxStations.ItemsSource=stations.stationArr;

上面的XAML代码只是一个示例,根据您的要求进行更改。

我以前在XAML文件中使用了以下代码尝试过这一点。
它没有显示任何内容。不要使用XAML,在后面的代码中尝试它。这真的没有那么难,XAML也不会让您走得太远。哟你在两个链接中都有示例。阅读它们我以前在我的xaml文件中用以下代码尝试过这一点。
它没有显示任何内容。不要使用xaml,在后面的代码中尝试它。这真的没有那么难,xaml也不会让你走得太远。你在两个链接中都有示例。Re广告