2013-05-06 1 views
-1

저는이 JSON을 웹 서비스에서 가져 와서 사전에 파싱했습니다.사전 개체에 iobservable을 구현하고 XAML 요소에 키 값을 할당합니다.

{ 
     "X-YZ-111/AB.CD": { 
      "P1": "F", 
      "P2": "43.46" 
     },   

     "X-YZ-112/AB.CD": { 
      "P1": "F", 
      "P2": "8.02" 
     }, 
     "X-YZ-113/AB.CD": { 
      "P1": "F", 
      "P2": "9066.58" 
     }, 
     "X-YZ-114/AB.CD": { 
      "P1": "F", 
      "P2": "6.00" 
     }, 
     "X-YZ-115/AB.CD": { 
      "P1": "F", 
      "P2": "6.00" 
     },   
     "X-YZ-116/AB.CD": { 
      "P1": "F", 
      "P2": "10.00" 
     }} 


    Using Windows.Data.Json; 

    private async void getJSON_click(object sender,RoutedEventArgs e) 

    { 
     var client=new HttpClient(); 
     client.MaxResponseBufferSize=1024*1024; 
     var response= await Client.GetAsync(new Uri(The URL here)); 
     var result = await response.Content.ReadAsStringAsync(); 

     var jObj = JObject.Parse(result); 
    var dict = jObj.Children() 
       .Cast<JProperty>() 
       .ToDictionary(p => p.Name, 
          p => new Tuple<string, string>((string)p.Value["P1"], (string)p.Value["P2"])); 

    } 

나는 내가 iobservable 구현할 수있는 방법으로 궁금와 이름, P1 및 P2있을 것이다 XAML에서 각 타일과 같은 XAML의 UI 요소에 DICT 객체와 바인딩 값에서 INotifyPropertyChanged. 제안 사항이 있으십니까?

+0

나는 그것이 옳다면 나는 shure하지 않다. 여러분의 객체에 대해 INotifyPropertyChanged를 구현 한 클래스를 작성하고 캐스트 한 다음 ObservableCollection 에 저장하십시오. – Andre

+0

@Andre foreach를 사용하여 dict 객체를 새 클래스로 캐스트한다는 의미입니까? –

+0

아니요, 더 자세한 답변을 게시하겠습니다. – Andre

답변

2

먼저 개체에 대한 클래스를 작성하고 INotifyPropertyChanged를 구현하십시오.

public class YourNewClass : INotifyPropertyChanged 
{ 
    private string _name; 
    public string Name 
    { 
     get { return _name; } 
     set 
     { 
      _name = value; 
      OnPropertyChanged("Name"); 
     } 
    } 
    // Same for other two properties 
} 

이제 컬렉션이 사전이 아니며 ObservableCollection입니다. getJSON_click 메서드에서 YourNewClass 유형의 새 객체에 데이터를로드합니다.

관련 문제