2014-01-29 3 views
1

I Done JSon Синтаксический По this wayКак создать ListBox в телефоне Windows для привязки данных Async Json от URL-адреса?

и в том, что если я попробовать с (в качестве примера)

public string id { get; set; } 

я могу в состоянии сделать постоянные данные не в ListBox ...

I Уже сделано андроид приложение .. для формы 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"], 
    .. 
} 
], 
... 
} 
} 

Как это Вы Hug e JSON data это всего лишь один цикл данных JSon ... у меня есть N циклов данных JSON. Поэтому я хочу отобразить данные.

Итак, в Android-браузере Json с Hashmap и сейчас в C# я разборе подобный способ .. enter image description here

Так на здесь я хочу List Box .. в андроида я использовал ListView + OnClick одиночный вид элемента по this Url

и в окнах я нашел List Box + onclick single item By this URL Но это не JSON его XML Json Я хочу это для JSON ..

и хочет добавить я хочу создать то же список коробочку с JSON данными С и задачами асинхронными, которая основана на

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

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

Как это ...

Так что это будет выглядеть так же, как приложение для Android ... есть ли способ сделать одно и то же приложение мерцания для JSON в приложении Windows Phone.

ответ

0

В Windows Phone 7 существует ListBox и LongListSelector (из Windows Phone Toolkit) управляет для представления разного рода коллекций. ListBox проще использовать. ListBox имеет ItemsSource Недвижимость.

Вы должны работать с UIElements только из основного потока. Но вы можете приготовить все в фоновом потоке

Как работать с ListBox:

  1. Вы можете поместить туда любой IEnumerable < yourDataModelClass> экземпляр или связать некоторое свойство с типом, который наследуется из IEnumerable (например, List < yourDataModelClass> или ObservableCollection < yourDataModelClass>. Второй лучше для привязки). «yourDataModelClass» - это некоторый класс, содержащий все свойства элемента ListBox. Если вам понравился LINQ, с помощью которого this guys (developer.nokia.com) десериализует XML, вы можете использовать LINQ to JSON. И для ListBox вам нужно установить свойство ItemTemplate (лучше сделать это из XAML) (http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemtemplate(v=vs.110).aspx).
  2. Как я уже упоминал, вы можете привязать некоторую коллекцию к свойству ItemsSource. Таким образом, вы поместили эту коллекцию в Свойство DataContext вашего списка ListBox. В XAML вы можете написать вот так: < ListBox ItemsSource = "{Binding}"/>. Так что если коллекция ObservableCollection, значит, уже реализован INotifyPropertyChanged, и эта коллекция уведомит своего владельца, если добавлены некоторые элементы (здесь вам также нужно создать некоторый ItemTemplate). Итак, если вы уже установили эту коллекцию в DataContex, вы не можете добавить что-то в нее в фоновый поток. Лучше что-то читать о MVVM шаблон, это круто \ м/
  3. Там это еще один способ работы с ListBox: Вы можете добавить элементы ListBox в его собственность под названием Элементы.

Для асинхронной работы здесь существует несколько способов:

  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).

Таким образом, эти способы помогут вам делать то, что вы хотите асинхронно. Enjoy =)

И не забудьте вернуться к основному потоку, когда ваш JSON разобран, и вы готовы показать его пользователю (Deployment.Current.Dispatcher.BeginInvoke (Action); возвращаться к потоку пользовательского интерфейса, когда захотите, но мой совет - прочитать о задачах BackgroundWorker и async)

Смежные вопросы