加可拉窗口

This commit is contained in:
2025-09-02 18:41:07 +08:00
parent 29e6225cdc
commit 6de9a56916
587 changed files with 5082 additions and 519 deletions

View File

@@ -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