# AutoSettingUI
**Repository Path**: zl_1009/AutoSettingUI
## Basic Information
- **Project Name**: AutoSettingUI
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-07-18
- **Last Updated**: 2026-07-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# AutoSettingUI
[](https://www.nuget.org/packages/AutoSettingUI.Core/)
[](https://www.nuget.org/packages/AutoSettingUI.Avalonia/)
[](https://www.nuget.org/packages/AutoSettingUI.Ursa/)
[](https://www.nuget.org/packages/AutoSettingUI.WPF/)
[](https://www.nuget.org/packages/AutoSettingUI.Generator/)
[](https://www.nuget.org/packages/AutoSettingUI.Core/)
[](LICENSE)
**AutoSettingUI** 是一个 .NET 库,通过为普通 C# 对象标注特性(Attribute),自动生成设置界面面板。只需装饰好类,将实例传入控件,即可得到一个完整可交互的设置表单,无需手动布局任何 UI。
## 功能亮点
- 🎨 **多框架支持** — Avalonia、Ursa(Avalonia 主题)和 WPF
- ✨ **特性驱动渲染** — 使用特性灵活自定义每个属性的渲染方式
- ⚡ **AOT 兼容** — 增量 Roslyn 源生成器,完整支持 Native AOT 与裁剪发布
- 🔄 **MVVM 支持** — 完美支持 CommunityToolkit.Mvvm `[ObservableProperty]`
- 🌐 **国际化支持** — 内置本地化服务,支持动态语言切换,基于 [DynamicLocalization](https://github.com/StarryXYJ/Avalonia.DynamicLocalization)
- 🔌 **高度可扩展** — 可注入自定义 Provider 和 Accessor
- 🧭 **内置导航栏** — 侧边栏树形导航
- 🎯 **扩展控件支持** — ColorPicker、DatePicker、TimePicker、NumericUpDown 等
## 安装
```xml
```
**目标框架:** `net8.0; net9.0; net10.0`(WPF: `net8.0-windows; net9.0-windows; net10.0-windows`)
**Avalonia:** `AutoSettingUI.Avalonia` 需要 Avalonia >= 11.0.0。`AutoSettingUI.Ursa` 需要 Avalonia >= 11.1.1(Ursa 依赖)。
## 快速上手
### 1. 添加样式引用(仅 Avalonia/Ursa)
> **⚠️ 重要:** 对于 Avalonia 和 Ursa 项目,必须在 `App.axaml` 中添加主题样式引用。
**Avalonia:**
```xml
```
**Ursa:**
```xml
```
### 2. 定义设置模型
```csharp
using AutoSettingUI.Core.Attributes;
using AutoSettingUI.Avalonia.Attributes; // 或 AutoSettingUI.Ursa.Attributes
[SettingUI]
[MainHeader("应用程序设置")]
public class AppSettings
{
[Title("应用程序名称")]
public string AppName { get; set; } = "我的应用程序";
[Title("音量")]
[Range(0, 100)]
public int Volume { get; set; } = 50;
[Title("启用日志")]
[CheckBox]
public bool EnableLogging { get; set; }
[Title("字体大小")]
[NumericUpDown(Minimum = 8, Maximum = 32)]
public int FontSize { get; set; } = 14;
}
```
#### 配合 CommunityToolkit.Mvvm 使用
```csharp
using CommunityToolkit.Mvvm.ComponentModel;
[SettingUI]
[MainHeader("应用程序设置")]
public partial class ApplicationSettings : ObservableObject
{
[Title("应用程序名称")]
[ObservableProperty]
private string _appName = "我的应用程序";
[Title("启用日志")]
[ObservableProperty]
private bool _enableLogging;
}
```
### 3. 绑定面板
**Avalonia:**
```xml
```
**Ursa:**
```xml
```
**WPF:**
```xml
```
**ViewModel:**
```csharp
public class MainViewModel
{
public IEnumerable