mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-24 02:14:26 +08:00
183 lines
4.2 KiB
Markdown
183 lines
4.2 KiB
Markdown
|
|
# 02-组件注册与配置
|
|||
|
|
|
|||
|
|
`AddPluginDesktopComponent` 是注册桌面组件的核心 API。本文详细讲解其用法和配置选项。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 API 概览
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
public static IServiceCollection AddPluginDesktopComponent<TComponent>(
|
|||
|
|
this IServiceCollection services,
|
|||
|
|
PluginDesktopComponentOptions options)
|
|||
|
|
where TComponent : class, IControl
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 基本用法
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
public override void Initialize(HostBuilderContext context, IServiceCollection services)
|
|||
|
|
{
|
|||
|
|
services.AddPluginDesktopComponent<MyWidget>(
|
|||
|
|
new PluginDesktopComponentOptions
|
|||
|
|
{
|
|||
|
|
ComponentId = "MyPlugin.MyWidget",
|
|||
|
|
DisplayName = "我的组件",
|
|||
|
|
IconKey = "Home",
|
|||
|
|
Category = "工具",
|
|||
|
|
MinWidthCells = 4,
|
|||
|
|
MinHeightCells = 3
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 PluginDesktopComponentOptions
|
|||
|
|
|
|||
|
|
### 完整属性列表
|
|||
|
|
|
|||
|
|
| 属性 | 类型 | 必需 | 说明 |
|
|||
|
|
|-----|------|------|------|
|
|||
|
|
| `ComponentId` | `string` | ✅ | 唯一标识符 |
|
|||
|
|
| `DisplayName` | `string` | ✅ | 显示名称 |
|
|||
|
|
| `IconKey` | `string` | ✅ | 图标键名 |
|
|||
|
|
| `Category` | `string` | ✅ | 分类 |
|
|||
|
|
| `MinWidthCells` | `int` | ✅ | 最小宽度(格) |
|
|||
|
|
| `MinHeightCells` | `int` | ✅ | 最小高度(格) |
|
|||
|
|
| `CornerRadiusPreset` | `PluginCornerRadiusPreset` | ❌ | 圆角预设 |
|
|||
|
|
| `ResizeMode` | `PluginDesktopComponentResizeMode` | ❌ | 调整大小模式 |
|
|||
|
|
|
|||
|
|
### ComponentId
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
ComponentId = "MyPlugin.WeatherWidget"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- 必须唯一
|
|||
|
|
- 建议使用 `插件ID.组件名` 格式
|
|||
|
|
- 一经发布不可更改
|
|||
|
|
|
|||
|
|
### DisplayName
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
DisplayName = "天气"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- 显示在组件库中
|
|||
|
|
- 支持本地化(通过资源文件)
|
|||
|
|
|
|||
|
|
### IconKey
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
IconKey = "Weather"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
使用 [Fluent UI System Icons](https://github.com/microsoft/fluentui-system-icons) 的图标名。
|
|||
|
|
|
|||
|
|
### Category
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
Category = "工具"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
常用分类:
|
|||
|
|
- `工具` - 实用工具
|
|||
|
|
- `信息` - 信息展示
|
|||
|
|
- `娱乐` - 娱乐相关
|
|||
|
|
- `系统` - 系统监控
|
|||
|
|
|
|||
|
|
### MinWidthCells / MinHeightCells
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
MinWidthCells = 4, // 4格宽,约240像素
|
|||
|
|
MinHeightCells = 3 // 3格高,约180像素
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎨 圆角配置
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
services.AddPluginDesktopComponent<MyWidget>(
|
|||
|
|
new PluginDesktopComponentOptions
|
|||
|
|
{
|
|||
|
|
ComponentId = "MyPlugin.Widget",
|
|||
|
|
DisplayName = "我的组件",
|
|||
|
|
IconKey = "Home",
|
|||
|
|
Category = "工具",
|
|||
|
|
MinWidthCells = 4,
|
|||
|
|
MinHeightCells = 3,
|
|||
|
|
CornerRadiusPreset = PluginCornerRadiusPreset.Component
|
|||
|
|
});
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📐 调整大小模式
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
services.AddPluginDesktopComponent<MyWidget>(
|
|||
|
|
new PluginDesktopComponentOptions
|
|||
|
|
{
|
|||
|
|
// ...
|
|||
|
|
ResizeMode = PluginDesktopComponentResizeMode.Free
|
|||
|
|
});
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 模式 | 说明 |
|
|||
|
|
|-----|------|
|
|||
|
|
| `Free` | 自由调整大小 |
|
|||
|
|
| `Fixed` | 固定大小 |
|
|||
|
|
| `AspectRatio` | 保持宽高比 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🧩 完整示例
|
|||
|
|
|
|||
|
|
```csharp
|
|||
|
|
public override void Initialize(HostBuilderContext context, IServiceCollection services)
|
|||
|
|
{
|
|||
|
|
// 天气组件
|
|||
|
|
services.AddPluginDesktopComponent<WeatherWidget>(
|
|||
|
|
new PluginDesktopComponentOptions
|
|||
|
|
{
|
|||
|
|
ComponentId = "WeatherPlugin.Widget",
|
|||
|
|
DisplayName = "天气",
|
|||
|
|
IconKey = "Weather",
|
|||
|
|
Category = "信息",
|
|||
|
|
MinWidthCells = 4,
|
|||
|
|
MinHeightCells = 3,
|
|||
|
|
CornerRadiusPreset = PluginCornerRadiusPreset.Component,
|
|||
|
|
ResizeMode = PluginDesktopComponentResizeMode.Free
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// 时钟组件
|
|||
|
|
services.AddPluginDesktopComponent<ClockWidget>(
|
|||
|
|
new PluginDesktopComponentOptions
|
|||
|
|
{
|
|||
|
|
ComponentId = "ClockPlugin.Widget",
|
|||
|
|
DisplayName = "时钟",
|
|||
|
|
IconKey = "Clock",
|
|||
|
|
Category = "工具",
|
|||
|
|
MinWidthCells = 4,
|
|||
|
|
MinHeightCells = 4,
|
|||
|
|
CornerRadiusPreset = PluginCornerRadiusPreset.Component,
|
|||
|
|
ResizeMode = PluginDesktopComponentResizeMode.AspectRatio
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📚 参考资源
|
|||
|
|
|
|||
|
|
- [PluginDesktopComponentOptions 源码](../../LanMountainDesktop.PluginSdk/PluginDesktopComponentOptions.cs)
|
|||
|
|
- [02-桌面组件系统](../02-核心概念与原理/02-桌面组件系统.md)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*最后更新:2026年4月*
|