如何将json数据绑定到Windows Phone 8的循环选择器

时间:2014-05-08 12:14:47

标签: xaml windows-phone-8 loopingselector

我正在开发windows phone 8应用程序。并使用循环选择器功能作为城市名称的绑定列表。

我以json格式获取城市名单。

现在我需要将结果绑定到循环选择器作为数据源

XAML CODE

 <DataTemplate x:Key="NumberTemplate">
                <Grid>
                    <TextBlock 
                        Text="{Binding }" 
                        FontSize="54" 
                        FontFamily="{StaticResource PhoneFontFamilySemiBold}" 
                        HorizontalAlignment="Center" 
                        VerticalAlignment="Center" />
                </Grid>
            </DataTemplate>

  <toolkit:LoopingSelector 
            x:Name="loopselector"
            Grid.Column="1" 
            Margin="12" 
            Width="128" 
            ItemSize="128,128" 
            ItemTemplate="{StaticResource NumberTemplate}">

            <toolkit:LoopingSelector.DataSource>
                <local:NumbersDataSource Minimum="0" Maximum="50" />
            </toolkit:LoopingSelector.DataSource>
        </toolkit:LoopingSelector>

CS CODE

 public void Citybind()
    {
        try
        {

            string city_nameurl = "http://xxxxxxx.yyyyyy";
            WebClient city_namewc = new WebClient();

            city_namewc.DownloadStringAsync(new Uri(city_nameurl), UriKind.Relative);
            city_namewc.DownloadStringCompleted += city_namewc_DownloadStringCompleted;
        }

        catch (Exception ex)
        {
        }
    }

    void city_namewc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        try
        {
            var city_name = e.Result;
            loopselector.ItemTemplate = city_name; /* Error Cannot convert string to system.windows.dataTemplat*/
 }

1 个答案:

答案 0 :(得分:0)

您可以使用流行的Json转换器库NewtonSoft.Json来实现此目的。只需将它从Visual Studio中的Nuget包管理器添加到您的项目中即可。然后在你的city_namewc_DownloadStringCompleted处理程序中,写下这样的内容:

var city_name = e.Result; ObservableCollection cityList = JsonConvert.DeserializeObject&gt;(city_name);

loopselector.ItemTemplate = city_name; loopselector.ItemSource = cityList;

此代码段假设您的json只是一个简单的字符串列表。如果不同,则需要调整类型&lt;&gt;您提供给JsonConvert进行反序列化。希望这有帮助!