在字典对象上实现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。有什么建议吗?
首先为您的对象编写一个类并实现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的新对象中。