2012-08-07 56 views
0

大家好,我有一个小问题,我希望有人能帮助我 我有一个JSON的网址,让我这样的数据:WP7 listpicker,从JSON结合

[ 
    { 
    "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; } 

    } 

我有一个listpicker:

我要绑定只是在listpicker元素“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://........")); 
     } 

然后我加入的ItemSource = {结合NOM}在listpicker在XAML

任何帮助我会很感激,并为我的英语感到抱歉

+0

什么确切的问题用这个?你有没有得到错误或没有得到预期的结果? – 2012-08-07 09:02:20

回答

0

它的好,我找到了答案,我已经用第二种方法

<toolkit:ListPicker x:Name="listPicker" Header="Application" > 
       <toolkit:ListPicker.ItemTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <TextBlock Text="{Binding nom}" /> 
         </StackPanel> 
        </DataTemplate> 
       </toolkit:ListPicker.ItemTemplate> 
      </toolkit:ListPicker> 
0

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

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