0

大家好,我有一个小问题,我希望有人可以帮助我我有一个 json url,它给我这样的数据:

[
  {
    "nom": "fofo",
    "appGuid": "79fa058b-395a-438d-b66f-d751faea82e0"
  },
  {
    "nom": "fifi",
    "appGuid": "8b6bfcdb-d286-46e2-889e-0168a782323f"
  },
  {
    "nom": "toto",
    "appGuid": "65DE39E7-0130-4836-BBD3-7051574018B6"
  },
  {
    "nom": "titi",
    "appGuid": "66DE39E7-0130-4836-BBD3-7051574018B6"
  }
]

我的课 :

public class ListApplication
    {

            public string nom { get; set; }
            public string appGuid { get; set; }

    }

我有一个列表选择器:

我只想在列表选择器中绑定元素“nom”,我尝试过这种方法,但没有任何效果:第一种方法:

WebClient visio = new WebClient();
            visio.DownloadStringCompleted += new DownloadStringCompletedEventHandler(vision_DownloadStringCompleted);
            visio.DownloadStringAsync(new Uri("https://......... "));

void vision_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            if (e.Error != null)
                return;
            JArray jArray = JArray.Parse(e.Result);
            List<ListApplication> apps = new List<ListApplication>();

            for (int i = 0; i < jArray.Count; i++)
            {
                JObject app = (JObject)jArray[i];
                apps.Add(new ListApplication { nom = (string)app["nom"], appGuid = (string)app["appGuid"] });
                this.Application.ItemsSource = apps;
                //
            }

第二种方法:

 public Appli()
        {
            InitializeComponent();
            this.Type_info.ItemsSource = Action;
            this.Periode.ItemsSource = Per;
            var w = new WebClient();
            Observable.FromEvent<DownloadStringCompletedEventArgs>(w, "DownloadStringCompleted").Subscribe(r =>
              {
                  var deserialized =
                    JsonConvert.DeserializeObject<List<ListApplication>>(r.EventArgs.Result);
                  Application.ItemsSource = deserialized;
              });
            w.DownloadStringAsync(
              new Uri("https://........"));
        }

然后我在 XAML 的 listpicker 中添加了 Itemsource= {Binding nom}

任何帮助我都会非常感激,对我的英语感到抱歉

4

2 回答 2

0

我相信你问的是绑定没有生效。也就是说,您看不到列表中的数据。

如果是这种情况,您是否将列表选择器的 DataContext 设置为列表?此外,当您收到更多 JSON 数据时,您似乎希望列表选择器的内容发生变化。因此,如果是这种情况,我建议您使用 ObservableCollection 而不是 List。

于 2012-08-07T10:01:28.777 回答
0

没关系,我找到了答案,我已将其与第二种方法一起使用

<toolkit:ListPicker x:Name="listPicker" Header="Application" >
                <toolkit:ListPicker.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding nom}" />
                        </StackPanel>
                    </DataTemplate>
                </toolkit:ListPicker.ItemTemplate>
            </toolkit:ListPicker>
于 2012-08-08T12:11:16.480 回答