本例子只是单纯的实现了工作中的功能,只能针对个别吧,如有错,莫见怪,谢谢。
#region 绑定TreeView控件 private void InitCountSignScopeJson() { NetWorkClient.StrCallBack callBack = delegate(String str) { if (str != null) { JArray orgAndPerson = (JArray)JsonConvert.DeserializeObject(str); CreateTreeView(orgAndPerson); } }; NetWorkClient.FetchStrFromShortUrl(UrlConstants.FetchOrgAndPerson, callBack); } /// <summary> /// 将获取到的数据绑定到TreeView中 /// </summary> /// <param name="orgAndPerson">Json格式数据</param> /// <param name="tv">父节点</param> private void CreateTreeView(JArray orgAndPerson) { // 遍历父节点 foreach (var parent in orgAndPerson.Children()) { TreeViewItem tvParent = new TreeViewItem(); ListBoxItem libParent = new ListBoxItem(); //只有转换成JObject,才能访问Properties()属性 JObject parentValue = parent as JObject; // 遍历父节点的属性 foreach (var proParent in parentValue.Properties()) { if (proParent.Name.Equals("name")) tvParent.Header = proParent.Value; } // 遍历父节点的子节点 if (parentValue["children"] != null) { foreach (var child in parent.Last.Children()) { JArray childValue = child as JArray; //调用遍历子节点函数 SubNodes(tvParent, childValue); } } tvCountsignScope.Items.Add(tvParent); } } /// <summary> ///遍历子节点 /// </summary> private void SubNodes(TreeViewItem tvParent, JArray childOrgPerson) { // 遍历子节点 foreach (var child in childOrgPerson.Children()) { JObject childValue = child as JObject; TreeViewItem tvChild = new TreeViewItem(); if (childValue != null) { // 遍历子节点的属性 foreach (var proChild in childValue.Properties()) { if (proChild.Name.Equals("name")) tvChild.Header = proChild.Value; } tvParent.Items.Add(tvChild); } if (child["children"] != null) { foreach (var childSub in child.First.Children()) { JArray childSubValue = childSub as JArray; if (childSubValue != null) //递归调用子节点 SubNodes(tvChild, childSubValue); } } } }