Xaml 如何将json数据绑定到windows phone 8的循环选择器

Xaml 如何将json数据绑定到windows phone 8的循环选择器,xaml,windows-phone-8,loopingselector,Xaml,Windows Phone 8,Loopingselector,我正在开发WindowsPhone8应用程序。并使用循环选择器功能绑定城市名称列表 我得到了json格式的城市名称列表 现在我需要将结果绑定到循环选择器作为数据源 XAML代码 <DataTemplate x:Key="NumberTemplate"> <Grid> <TextBlock Text="{Binding }"

我正在开发WindowsPhone8应用程序。并使用循环选择器功能绑定城市名称列表

我得到了json格式的城市名称列表

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

XAML代码

 <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>
 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*/
 }

为此,您可以使用流行的Json转换器库NewtonSoft.Json。只需从VisualStudio中的Nuget package manager将其添加到项目中。然后,在您的城市\u namewc\u DownloadStringCompleted handler中,编写如下内容:

var city_name=e.结果; ObservableCollection cityList=JsonConvert.DeserializeObject>(城市名称)

loopselector.ItemTemplate=城市名称; loopselector.ItemSource=城市列表


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

那么,到目前为止你尝试了什么?@kamiccolo我尝试了上面的代码。但我不知道如何将city_name用作loopingselector ItemSource我遇到错误“找不到类型或命名空间名称'ObservaleCollection'(是否缺少using指令或程序集“引用?”),请使用此命名空间:System.Collections.ObjectModel。这包含ObservableCollection,我添加了它。但还是出现了同样的错误。我在网上查到了这个问题,他们告诉我在assemply中添加windowsbase dll。我无法将此dll添加到我的assemplyRead中。默认情况下,它应该可用。