# JsonConfiger
**Repository Path**: GiantappMan/JsonConfiger
## Basic Information
- **Project Name**: JsonConfiger
- **Description**: 根据JSON生成WPF/UWP配置界面。 Dynamic generate config UI from json file for WPF/UWP
- **Primary Language**: C#
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2019-08-21
- **Last Updated**: 2025-03-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 弃更
推荐使用船新版本: https://github.com/DaZiYuan/GiantappConfiger
---
# JsonConfiger
根据JSON生成WPF/UWP配置界面
## 目的
根据JSON动态生成配置界面,节省枯燥的配置界面编写环节。适用于对界面自定义要求不高,满足用户可以通过GUI修改配置的场景
## 用法
* **定义默认配置**
```
//Configs/default_config.json 编译时拷贝到目录
{
"general": {
"startupWithWindows": true
}
}
```
* **控件引用**
```xaml
/* wpf */
```
* **ViewModel**
```csharp
JCrService _jcrService = new JCrService();
var config = await JsonHelper.JsonDeserializeFromFileAsync(todo.ConfigFilePath);
string descPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "Resources\\Configs\\setting.desc.json");
var descConfig = await JsonHelper.JsonDeserializeFromFileAsync(descPath);
JsonConfierViewModel = _jcrService.GetVM(config, descConfig);
```
## 程序动态注入数据
```json
//.desc.json file
"setting2": {
"test": {
"lan": "代码注入",
"type": "combobox",
"cbItems": "$screen"
}
}
```
//.cs file
```csharp
List extraDescObjs = new List();
extraDescObjs.Add(new
{
lan = string.Format($"禁用"),
value = -1
});
for (int i = 0; i < System.Windows.Forms.Screen.AllScreens.Length; i++)
{
extraDescObjs.Add(new
{
lan = string.Format($"屏幕{i}"),
value = i
});
}
service.InjectDescObjs("$screen", extraDescObjs);
```
## 注意事项:
* lanKey区分大小写,定义时K不要写成小写了