加可拉窗口
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Diagnostics;
|
||||
@@ -17,6 +18,7 @@ using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using System.Windows.Threading;
|
||||
using System.Xml.Linq;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
|
||||
namespace Ramitta
|
||||
{
|
||||
@@ -53,13 +55,13 @@ namespace Ramitta
|
||||
#region 公共方法
|
||||
|
||||
#region 增
|
||||
public LabelTreeNode AddLabelNode(string text, TreeNode parent = null)
|
||||
public LabelTreeNode AddLabelNode(string text, TreeNode? parent = null)
|
||||
{
|
||||
var node = new LabelTreeNode { Text = text };
|
||||
AddNode(node, parent);
|
||||
return node;
|
||||
}
|
||||
public CheckboxTreeNode AddCheckboxNode(string text, string? tag=null, bool isChecked = false, TreeNode parent = null)
|
||||
public CheckboxTreeNode AddCheckboxNode(string text, string? tag=null, bool isChecked = false, TreeNode? parent = null)
|
||||
{
|
||||
var node = new CheckboxTreeNode {
|
||||
Text = text,
|
||||
@@ -68,7 +70,7 @@ namespace Ramitta
|
||||
AddNode(node, parent);
|
||||
return node;
|
||||
}
|
||||
public ComboboxTreeNode AddComboboxNode(string text, string[]? item=null, TreeNode parent = null)
|
||||
public ComboboxTreeNode AddComboboxNode(string text, string[]? item=null, TreeNode? parent = null)
|
||||
{
|
||||
var node = new ComboboxTreeNode {
|
||||
Text = text,
|
||||
@@ -223,8 +225,6 @@ namespace Ramitta
|
||||
else
|
||||
return To<xTreeNode, xControl>(targetNode);
|
||||
}
|
||||
|
||||
|
||||
public xControl? To<xTreeNode, xControl>(xTreeNode node)
|
||||
where xTreeNode : class
|
||||
where xControl : DependencyObject
|
||||
@@ -281,6 +281,49 @@ namespace Ramitta
|
||||
return null;
|
||||
}
|
||||
|
||||
public JObject JsonPrint(IEnumerable<TreeNode>? nodes, int loop = 0)
|
||||
{
|
||||
// 如果传入的节点为空,使用默认的 Nodes 集合
|
||||
if (nodes == null) nodes = Nodes;
|
||||
|
||||
JObject resultObject = new JObject();
|
||||
|
||||
// 为每个节点构建一个 JObject
|
||||
foreach (var node in nodes)
|
||||
{
|
||||
JObject nodeObject = new JObject();
|
||||
|
||||
// 为当前节点添加基本信息
|
||||
nodeObject["Type"] = node.GetType().Name;
|
||||
|
||||
if (node.GetType() == typeof(CheckboxTreeNode))
|
||||
{
|
||||
nodeObject["IsChecked"] = (node as CheckboxTreeNode)?.IsChecked.ToString();
|
||||
}
|
||||
|
||||
|
||||
if (node.GetType() == typeof(ComboboxTreeNode))
|
||||
{
|
||||
var target = node as ComboboxTreeNode;
|
||||
nodeObject["SelectedItem"] = target?.SelectedItem.ToString();
|
||||
}
|
||||
|
||||
|
||||
// 处理子节点
|
||||
if (node.Children.Count > 0)
|
||||
{
|
||||
// 递归调用以处理子节点,并将结果放在 "child" 属性下
|
||||
JObject childrenObject = JsonPrint(node.Children, loop + 1);
|
||||
nodeObject["child"] = childrenObject;
|
||||
}
|
||||
|
||||
// 使用节点文本作为属性名,将当前节点对象添加到结果中
|
||||
resultObject.Add(node.Text, nodeObject);
|
||||
}
|
||||
|
||||
// 返回结果对象
|
||||
return resultObject;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 删
|
||||
|
||||
Reference in New Issue
Block a user