在字典对象上实现iobservable,并为XAML元素分配键值

本文关键字:XAML 并为 元素 分配 键值 iobservable 字典 对象 实现 | 更新日期: 2023-09-27 18:12:13

我有这个JSON,我正在做GET从webservice在我的代码和解析成一个字典。

 {
        "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和inotifypropertychanged,并将值绑定到XAML中的UI元素,就像XAML中的每个tile都有名称,P1和P2。有什么建议吗?

在字典对象上实现iobservable,并为XAML元素分配键值

首先为您的对象编写一个类并实现INotifyPropertyChanged。

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

现在你的集合不是Dictionary,而是ObservableCollection。在getJSON_click方法中,您将数据加载到类型为YourNewClass的新对象中。