OpenRobot.Framework.WPFCore
1.0.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package OpenRobot.Framework.WPFCore --version 1.0.0
NuGet\Install-Package OpenRobot.Framework.WPFCore -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OpenRobot.Framework.WPFCore" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OpenRobot.Framework.WPFCore" Version="1.0.0" />
<PackageReference Include="OpenRobot.Framework.WPFCore" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OpenRobot.Framework.WPFCore --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: OpenRobot.Framework.WPFCore, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OpenRobot.Framework.WPFCore@1.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OpenRobot.Framework.WPFCore&version=1.0.0
#tool nuget:?package=OpenRobot.Framework.WPFCore&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
OpenRobot.Framework.WPFCore
一个强大的 WPF 桌面应用程序框架库,为 .NET 8.0-windows 应用程序提供依赖注入、AOP、模块化初始化、事件系统、数据分页和现代化启动界面。框架使用 Castle DynamicProxy 实现运行时代理生成和方法拦截,提供企业级的开发体验。
主要特性
- 依赖注入 - 基于 Microsoft.Extensions.DependencyInjection 的 DI 容器,支持单例和瞬时服务
- AOP 拦截 - 使用 Castle DynamicProxy 实现方法拦截,支持异常处理、日志记录、加载指示、通知等
- 模块化初始化 - 插件式模块加载系统,支持生命周期管理和自定义启动界面
- 事件系统 - 类型安全的事件总线,支持发布/订阅模式
- 数据分页 - 客户端和服务器端分页支持,带动态查询构建器
- 现代化启动界面 - SVG Path 图形轮播,支持自定义 App Icon 和轮播图片
- 无需外部资源 - 所有图形元素使用 SVG Path 绘制,不依赖 PNG 图片
安装
dotnet add package OpenRobot.Framework.WPFCore
或在 Visual Studio 的 NuGet 包管理器控制台中运行:
Install-Package OpenRobot.Framework.WPFCore
快速开始
1. 应用启动
using OpenRobot.Framework;
using OpenRobot.Framework.Startup;
// 基础启动(使用默认 SVG 轮播)
SmartStartupFactory.Init("我的应用", "1.0.0", null);
SmartStartupFactory.StartUp(typeof(MainWindow), () => { }, "", true);
2. 完整配置启动
// 加载自定义图片资源
var appIcon = File.ReadAllBytes("app-icon.png");
var carouselImages = new List<byte[]>
{
File.ReadAllBytes("slide1.png"),
File.ReadAllBytes("slide2.png")
};
SmartStartupFactory.Init(
"我的应用",
"1.0.0",
imgData: null, // 背景图片(可选)
appIcon: appIcon, // App 图标(可选)
carouselImages: carouselImages, // 轮播图片(可选)
colorType: ColorType.White
);
SmartStartupFactory.StartUp(typeof(MainWindow), () =>
{
// 启动成功后的回调
}, "", true);
使用示例
依赖注入
using OpenRobot.Framework;
using OpenRobot.Framework.Dependency;
// 注册服务
SmartConfiguration.RegisterConfiguration(new MyLogService(), typeof(ISmartLogRegister));
// 获取服务
var logService = SmartConfiguration.GetOrCreate<ISmartLogRegister>();
logService?.Log(SmartLevelEnum.Info, "应用启动成功", SmartLogTagEnum.Host);
创建带 DI 的服务类
// 需要 AOP 拦截的服务
public class MyService : ISmartDependency
{
[SmartValueDependency]
protected ISmartLogRegister ISmartLog { get; set; } = null!;
[SmartException(FriendlyMessage = "操作失败")]
[SmartLog(Message = "执行业务逻辑")]
[SmartLoading(Message = "正在处理...")]
public void DoWork()
{
// 业务逻辑代码
// 异常自动被捕获并显示友好消息
// 日志自动记录
// 加载状态自动显示
}
}
创建模块初始化组件
using OpenRobot.Framework.Dependency;
[SmartModuleInit]
public class DatabaseModuleInit : ISmartModuleInit
{
public int Index => 100;
public int SleepTime => 2000;
public string Title => "数据库初始化";
public event Action<string> PushNoticeMessageEvent;
public void Init()
{
// 一次性初始化逻辑
}
public ModuleCheckResult Check()
{
// 重复检查直到成功
return new ModuleCheckResult { Success = true };
}
public void Stop() { }
public void Exit() { }
}
事件系统
// 定义事件数据
public class UserLoginEvent : SmartEventData
{
public string UserId { get; set; }
public DateTime LoginTime { get; set; }
}
// 订阅事件
public class LoginEventHandler : ISmartEventRegister<UserLoginEvent>
{
public Task EventRefresh(UserLoginEvent data)
{
Console.WriteLine($"用户 {data.UserId} 登录于 {data.LoginTime}");
return Task.CompletedTask;
}
}
// 触发事件
var eventHandler = SmartConfiguration.GetOrCreate<ISmartEventHander>();
eventHandler?.Trigger(new UserLoginEvent { UserId = "user123", LoginTime = DateTime.Now });
数据分页
using OpenRobot.Framework.DataPgination;
// 客户端分页
var pagination = new PaginationClient<UserDto>(allUsers);
pagination.PageIndexChanged += (sender, e) => Console.WriteLine($"当前页: {e.NewPageIndex}");
// 服务器端分页
var serverPagination = new PagintionServer<UserDto>(proxy);
await serverPagination.RefreshData();
创建带 DI 的 ViewModel
public class MyViewModel : ISmartAutoDependency
{
[SmartValueDependency]
protected ISmartDialogRegister ISmartDialog { get; set; } = null!;
[SmartValueDependency]
protected ISmartLoadingRegister ISmartLoading { get; set; } = null!;
public async Task SaveData()
{
ISmartLoading?.SetBusy("正在保存...");
try
{
// 保存逻辑
await ISmartDialog?.Success("成功", "数据已保存");
}
finally
{
ISmartLoading?.ClearBusy();
}
}
}
AOP 特性
框架提供以下 AOP 拦截器,通过特性标记即可使用:
| 特性 | 说明 | 接口 |
|---|---|---|
[SmartException] |
捕获异常并显示友好消息 | ISmartExceptionRegister |
[SmartLog] |
记录方法调用日志 | ISmartLogRegister |
[SmartLoading] |
显示加载指示器 | ISmartLoadingRegister |
[SmartNotice] |
发送通知消息 | ISmartNoticeRegister |
启动界面
默认轮播内容
框架提供两个默认的 SVG Path 轮播内容:
- 框架架构图 - 展示 WPF Core 的核心架构(DI、AOP、Event、Pager)
- 功能特性 - 展示框架的 5 大核心功能
自定义轮播图片
// 支持传入自定义图片(PNG/JPG)
var carouselImages = new List<byte[]>
{
File.ReadAllBytes("feature1.png"),
File.ReadAllBytes("feature2.png"),
File.ReadAllBytes("feature3.png")
};
SmartStartupFactory.Init(
appName,
version,
carouselImages: carouselImages
);
启动窗口布局
- 左上角:App Icon + 应用名称
- 右上方:版本号
- 中间:轮播区域(图片或 SVG Path)
- 下方:进度条 + 百分比 + 消息提示
- 底部:状态信息
核心接口
| 接口 | 命名空间 | 说明 |
|---|---|---|
ISmartDependency |
OpenRobot.Framework.Dependency |
需要代理的 DI 服务 |
ISmartAutoDependency |
OpenRobot.Framework.Dependency |
ViewModel(无代理) |
ISmartModuleInit |
OpenRobot.Framework.Dependency |
模块初始化接口 |
ISmartEventRegister<T> |
OpenRobot.Framework.Core |
事件订阅者 |
ISmartEventHander |
OpenRobot.Framework.Core |
事件触发器 |
IPagination<T> |
OpenRobot.Framework.DataPgination |
分页接口 |
配置选项
| 方法 | 说明 | 示例 |
|---|---|---|
RegisterConfiguration() |
注册单例服务 | SmartConfiguration.RegisterConfiguration(service) |
RegisterConfiguration<T>(T, Type) |
使用接口注册 | SmartConfiguration.RegisterConfiguration(impl, typeof(IService)) |
GetOrCreate<T>() |
获取或创建服务 | SmartConfiguration.GetOrCreate<IService>() |
Get<T>(string) |
获取指定服务 | SmartConfiguration.Get<IService>("fullName") |
依赖项
| 包名 | 版本 | 用途 |
|---|---|---|
| Castle.Core | 5.1.1 | 动态代理 |
| Castle.Core.AsyncInterceptor | 2.1.0 | 异步拦截 |
| Microsoft.Extensions.DependencyInjection | 8.0.0 | 依赖注入 |
系统要求
- .NET 8.0-windows 或更高版本
- Windows 操作系统
项目结构
OpenRobot.Framework.WPFCore/
├── Core/ # 核心组件
├── DataPagination/ # 数据分页
├── Dependency/ # 依赖注入
├── EmitProxy/ # AOP 拦截
├── Model/ # 数据模型
├── Startup/ # 启动系统
└── SmartConfiguration # 配置管理
许可证
本项目采用 MIT 许可证。
作者
OpenRobot
反馈与贡献
欢迎通过以下方式提供反馈:
- 提交 Issue
- 发起 Pull Request
- 联系维护者
提示: 本框架专为 WPF 桌面应用程序设计,提供了完整的开发基础设施,大幅提升开发效率。
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0-windows7.0 is compatible. net9.0-windows was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0-windows7.0
- Castle.Core (>= 5.1.1)
- Castle.Core.AsyncInterceptor (>= 2.1.0)
- Microsoft.Extensions.DependencyInjection (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.