2014-01-29 35 views
1

我做了使用JSON解析this way如何在windows手機中創建一個ListBox的異步JSON數據記錄從一個URL?

,並說,如果我嘗試用(作爲例子)

public string id { get; set; } 

我可以能夠使恆定的數據不是一個列表框...

我已經做了一個Android應用程序。對於一個JSON格式的URL。這是我的JSON數據(與此類似。)

{ 
"returnCode": "success", 
"Data": { 
"results": [ 
{ 
    "moredetails": [ 
     { 
      "newoffers": [ 

      ], 
      "recentoffers_count": 0, 
      "sku": "30072246" 
     }, 
     { 
      "newoffers": [ 
       { 
        "availability": "Available", 
        "currency": "USD" 
       } 
      ] 
     }, 
     { 
      "newoffers": [ 
       { 
        "availability": "Available", 
        "currency": "USD" 
       } 
      ], 
      "offers_count": 1, 
      "name": "google.com" 
     } 
    ], 
    ..."features": { 
     .. 
    }, 
    "length": "20", 
    "geo": [ 
     "usa" 
    ], 
    .."images": ["http://timenerdworld.files.wordpress.com/2013/01/wpid-photo-jan-14-2013-1117-am.jpg"], 
    .. 
} 
], 
... 
} 
} 

像這樣有一個擁抱e JSON數據這只是一個JSon數據的一個循環...我有一個JSON數據循環所以我想要顯示的數據..

所以在Android中,我解析JSON與散列表和現在在C#我解析類似的方式.. enter image description here

因此,在這裏我想有一個列表框。在我的Android使用的ListView +的onclick單個項目視圖通過this Url

,並在Windows我發現了一個列表框+ onclick單品通過this URL但它不是JSON它是一個XML Json我想這個JSON ..

,並希望增加我想與它在

JObject json = JObject.Parse(eArgs.Result); 
     JArray category_list = (JArray)json["category_list"]; 

     this.jAbout.Text = (string)json["about"]; 

就像是一個基於JSON數據有和異步任務創建一個相同的列表框...

所以,這看起來同樣喜歡的Android應用程序...有沒有什麼辦法可以在Windows Phone應用程序中爲JSON製作相同的閃爍應用程序。

回答

0

在Windows Phone 7的存在列表框LongListSelector(從Windows Phone的工具包),代表不同類型的集合控制。 ListBox更簡單易用。 ListBox has ItemsSource property。

您必須僅從主線程使用UIElements。但你可以在後臺線程做好一切準備

如何使用ListBox的工作:

  1. 你可以把有任何IEnumerable的< yourDataModelClass>實例或綁定一些屬性與類型,繼承從IEnumerable(例如,列表< yourDataModelClass>或ObservableCollection < yourDataModelClass>。第二個更適合綁定)。 「yourDataModelClass」是一些類,它包含ListBox項目的所有屬性。如果你喜歡LINQ,在this guys(developer.nokia.com)的反序列化XML的幫助下,你可以使用LINQ to JSON。 而對於必須設置ItemTemplate屬性(更好地XAML做到這一點),列表框(http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemtemplate(v=vs.110).aspx)。
  2. 正如我已經提到的,你可以將一些集合綁定到ItemsSource屬性。所以你把這個集合放入你的ListBox的DataContext屬性中,在XAML中你可以這樣寫:< ListBox ItemsSource =「{Binding}」/>。所以,如果收集的ObservableCollection,所以已經實現INotifyPropertyChanged的,這個集合將通知其所有人,如果有附加一些項目(這裏是你還可以建立一些的ItemTemplate)。 所以,如果你已經設置這個集合的DataContex,你可以不加東西進去後臺線程。這是更好地閱讀一些有關MVVM模式,它的涼爽\ M/
  3. 還有另一種方式與列表框的工作:您可以添加列表框項目的屬性稱爲項目

對於異步工作在這裏存在幾個方面:

  1. BackgroundWorker的類(http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v=vs.95).aspx
  2. 異步任務(你需要這個庫爲它http://www.nuget.org/packages/Microsoft.Bcl.Async/)(這裏是一個例如使用Async await in Windows Phone web access APIs)的任務的。

所以這種方式將幫助你做任何你想要的異步。享受=)

不要忘了回到主線程,當你的JSON被解析並準備好向用戶展示它時(Deployment.Current.Dispatcher.BeginInvoke(Action); - 這就是回到每當你想要的UI線程,但我的建議是閱讀有關BackgroundWorker的和異步任務)

相關問題