2025-09-03 16:16:00 +08:00
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
|
using Newtonsoft.Json.Linq;
|
2025-08-30 21:14:02 +08:00
|
|
|
|
using Ramitta;
|
|
|
|
|
|
using System.Data.Common;
|
2025-08-29 14:57:55 +08:00
|
|
|
|
using System.Diagnostics;
|
2025-09-03 16:16:00 +08:00
|
|
|
|
using System.IO;
|
2025-08-29 14:57:55 +08:00
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Windows;
|
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
|
using System.Windows.Data;
|
|
|
|
|
|
using System.Windows.Documents;
|
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
|
using System.Windows.Media;
|
|
|
|
|
|
using System.Windows.Media.Imaging;
|
|
|
|
|
|
using System.Windows.Navigation;
|
|
|
|
|
|
using System.Windows.Shapes;
|
|
|
|
|
|
using System.Windows.Threading;
|
2025-08-30 21:14:02 +08:00
|
|
|
|
using System.Xml.Linq;
|
|
|
|
|
|
using static Ramitta.lib.Basic;
|
|
|
|
|
|
using static Ramitta.winDataGrid;
|
2025-08-29 14:57:55 +08:00
|
|
|
|
|
|
|
|
|
|
namespace template
|
|
|
|
|
|
{
|
|
|
|
|
|
public partial class MainWindow : Window
|
|
|
|
|
|
{
|
|
|
|
|
|
static string? filePath;
|
|
|
|
|
|
private JToken? _currentJsonData = null;
|
|
|
|
|
|
private string? _currentFilePath = null;
|
|
|
|
|
|
|
|
|
|
|
|
#region 初始化MainWindow
|
|
|
|
|
|
public MainWindow(StartupEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
Startupe = ParseCommandLineArgs(e.Args);
|
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
if (Startupe.TryGetValue("getfile", out string filePath))
|
|
|
|
|
|
{
|
|
|
|
|
|
MainWindow.filePath = filePath;
|
|
|
|
|
|
DebugBar(Debugtag, $"操作目标:{filePath}", 正常绿色);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugBar(Debugtag, $"未指定操作目标", 警告橙色);
|
|
|
|
|
|
}
|
2025-08-30 21:14:02 +08:00
|
|
|
|
|
2025-09-01 17:12:06 +08:00
|
|
|
|
xDataGrid.InitColumns(
|
|
|
|
|
|
("标题", ColumnType.Label),
|
|
|
|
|
|
("判断", ColumnType.CheckBox),
|
|
|
|
|
|
("康波", ColumnType.ComboBox)
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
(xDataGrid.AddRow()["标题"] as Label).Content = "1";
|
|
|
|
|
|
(xDataGrid.AddRow()["标题"] as Label).Content = "2";
|
|
|
|
|
|
(xDataGrid.AddRow()["标题"] as Label).Content = "3";
|
|
|
|
|
|
|
2025-08-30 21:14:02 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 修改按钮文本
|
|
|
|
|
|
// 查找Content为"删除"的第一行
|
|
|
|
|
|
|
2025-09-01 17:12:06 +08:00
|
|
|
|
var targetRow = xDataGrid.Rows
|
|
|
|
|
|
.FirstOrDefault(row => (row["标题"] as Label)?.Content.ToString() == "2");
|
|
|
|
|
|
|
|
|
|
|
|
(targetRow["判断"] as CheckBox).IsChecked= true;
|
2025-08-30 21:14:02 +08:00
|
|
|
|
|
2025-08-29 14:57:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-08-30 21:14:02 +08:00
|
|
|
|
|
2025-08-29 14:57:55 +08:00
|
|
|
|
private void 增(object sender, RoutedEventArgs e)
|
|
|
|
|
|
{
|
2025-08-30 21:14:02 +08:00
|
|
|
|
// 添加顶层节点
|
2025-08-29 14:57:55 +08:00
|
|
|
|
TreeList.AddCheckboxNode("A");
|
2025-08-30 21:14:02 +08:00
|
|
|
|
TreeList.AddCheckboxNode("B");
|
2025-08-29 14:57:55 +08:00
|
|
|
|
|
2025-08-30 21:14:02 +08:00
|
|
|
|
// 添加标签节点 "GroupC",并嵌套子节点 "D" 和 "E"
|
|
|
|
|
|
var groupC = TreeList.AddLabelNode("GroupC");
|
|
|
|
|
|
TreeList.AddCheckboxNode("D", parent: groupC); // GroupC 下的 "D"
|
|
|
|
|
|
TreeList.AddCheckboxNode("E", parent: groupC); // GroupC 下的 "E"
|
|
|
|
|
|
|
|
|
|
|
|
// 添加标签节点 "GroupF",并嵌套子节点 "G" 和 "H"
|
|
|
|
|
|
var groupF = TreeList.AddLabelNode("GroupF");
|
|
|
|
|
|
TreeList.AddCheckboxNode("G", parent: groupF); // GroupF 下的 "G"
|
|
|
|
|
|
var groupH = TreeList.AddCheckboxNode("H", parent: groupF); // GroupF 下的 "H"
|
|
|
|
|
|
|
|
|
|
|
|
// 在 "H" 下添加节点 "I" 和 "J"
|
|
|
|
|
|
TreeList.AddCheckboxNode("I", parent: groupH); // "H" 下的 "I"
|
|
|
|
|
|
TreeList.AddCheckboxNode("J", parent: groupH); // "H" 下的 "J"
|
|
|
|
|
|
|
|
|
|
|
|
// 添加多个类型为 "K" 的节点(分别加入不同层级)
|
|
|
|
|
|
TreeList.AddCheckboxNode("K", "1"); // 顶层 "K" 节点
|
|
|
|
|
|
TreeList.AddLabelNode("K", parent: groupH); // "H" 下的 "K" 节点
|
|
|
|
|
|
TreeList.AddCheckboxNode("K", "3", parent: groupF); // "GroupF" 下的 "K" 节点
|
|
|
|
|
|
TreeList.AddCheckboxNode("K", "4", parent: groupC); // "GroupC" 下的 "K" 节点
|
|
|
|
|
|
|
|
|
|
|
|
// 添加更多重复节点
|
|
|
|
|
|
TreeList.AddCheckboxNode("A"); // 顶层重复 "A" 节点
|
|
|
|
|
|
TreeList.AddCheckboxNode("B"); // 顶层重复 "B" 节点
|
|
|
|
|
|
|
|
|
|
|
|
// 再次在 GroupC 下添加重复节点 "D" 和 "E"
|
|
|
|
|
|
TreeList.AddCheckboxNode("D", parent: groupC); // GroupC 下重复 "D"
|
|
|
|
|
|
TreeList.AddCheckboxNode("E", parent: groupC); // GroupC 下重复 "E"
|
|
|
|
|
|
|
|
|
|
|
|
// 再次在 GroupF 下添加重复节点 "G"
|
|
|
|
|
|
TreeList.AddCheckboxNode("G", parent: groupF); // GroupF 下重复 "G"
|
|
|
|
|
|
|
|
|
|
|
|
// 在 "H" 下添加重复节点 "I" 和 "J"
|
|
|
|
|
|
TreeList.AddCheckboxNode("I", parent: groupH); // "H" 下重复 "I"
|
|
|
|
|
|
TreeList.AddCheckboxNode("J", parent: groupH); // "H" 下重复 "J"
|
|
|
|
|
|
|
|
|
|
|
|
// 为了形成至少5层的嵌套,再加一个新的标签节点 "GroupG",并添加节点
|
|
|
|
|
|
var groupG = TreeList.AddLabelNode("GroupG");
|
|
|
|
|
|
TreeList.AddCheckboxNode("L", parent: groupG); // GroupG 下的 "L"
|
|
|
|
|
|
TreeList.AddCheckboxNode("M", parent: groupG); // GroupG 下的 "M"
|
|
|
|
|
|
|
|
|
|
|
|
// 继续在 GroupG 下添加节点 "N"
|
|
|
|
|
|
TreeList.AddCheckboxNode("N", parent: groupG); // GroupG 下的 "N"
|
|
|
|
|
|
|
|
|
|
|
|
// 再添加 GroupG 下的 "O" 和 "P"
|
|
|
|
|
|
TreeList.AddCheckboxNode("O", parent: groupG); // GroupG 下的 "O"
|
|
|
|
|
|
TreeList.AddCheckboxNode("P", parent: groupG); // GroupG 下的 "P"
|
2025-08-29 14:57:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void 改(object sender, RoutedEventArgs e)
|
|
|
|
|
|
{
|
2025-09-03 16:16:00 +08:00
|
|
|
|
string outputPath = @"C:\Users\Xeroly\Desktop\sieghail.json";
|
|
|
|
|
|
|
|
|
|
|
|
// 方法1:使用File.ReadAllText(推荐)
|
|
|
|
|
|
string jsonContent = File.ReadAllText(outputPath);
|
|
|
|
|
|
TreeList.JsonParse(jsonContent);
|
2025-08-29 14:57:55 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void 删(object sender, RoutedEventArgs e)
|
|
|
|
|
|
{
|
2025-09-01 17:12:06 +08:00
|
|
|
|
xDataGrid.Rows.Clear();
|
2025-08-29 14:57:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void 查(object sender, RoutedEventArgs e)
|
|
|
|
|
|
{
|
2025-09-03 16:16:00 +08:00
|
|
|
|
string outputPath = @"C:\Users\Xeroly\Desktop\sieghail.json"; // 修改为你想要保存的路径
|
2025-08-29 14:57:55 +08:00
|
|
|
|
|
2025-09-03 16:16:00 +08:00
|
|
|
|
// 获取要输出的文本
|
|
|
|
|
|
string outputText = TreeList.JsonPrint().ToString();
|
2025-08-29 14:57:55 +08:00
|
|
|
|
|
2025-09-03 16:16:00 +08:00
|
|
|
|
// 使用StreamWriter将文本写入文件
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
using (StreamWriter writer = new StreamWriter(outputPath, false)) // 'true'表示以追加模式写入文件
|
|
|
|
|
|
{
|
|
|
|
|
|
writer.WriteLine(outputText); // 写入文本
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("错误: " + ex.Message); // 如果写入过程中出现异常,弹出错误信息
|
|
|
|
|
|
}
|
2025-08-29 14:57:55 +08:00
|
|
|
|
}
|
2025-09-03 16:16:00 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
2025-08-29 14:57:55 +08:00
|
|
|
|
}
|