# mn-shell
**Repository Path**: eastmike/mn-shell
## Basic Information
- **Project Name**: mn-shell
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-01-01
- **Last Updated**: 2026-03-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# MN.Shell
MN.Shell 是一个受 Visual Studio 和 Visual Studio Code 启发的应用程序框架,基于 .NET 6.0 和 WPF 构建,采用 MVVM 架构模式。它提供了插件系统、美观的主题、停靠布局等功能。
本项目将原来的 MN.Shell.MVVM 替换为 CommunityToolkit.Mvvm。
## 特性
- **MVVM 架构** - 基于 CommunityToolkit.Mvvm 的现代化 MVVM 框架
- **插件系统** - 灵活的插件机制,支持动态加载和扩展
- **主题支持** - 支持明暗主题切换,提供了多种配色方案
- **停靠布局** - 使用 AvalonDock 实现类似 Visual Studio 的停靠窗口
- **菜单系统** - 动态菜单构建,支持多级菜单
- **状态栏** - 可自定义的状态栏组件
- **文件夹浏览器** - 内置的文件资源管理器模块
- **对话框** - 统一的消息框和对话框管理
## 技术栈
- .NET 6.0
- WPF (Windows Presentation Foundation)
- CommunityToolkit.Mvvm
- CommunityToolkit.Logging
- Ninject (依赖注入)
- NLog (日志)
- AvalonDock (停靠布局)
## 项目结构
```
src/
├── MN.Shell.Demo/ # 演示应用程序
│ ├── ControlsDemo/ # 控件演示
│ ├── Output/ # 输出窗口
│ ├── ProgressBars/ # 进度条演示
│ └── TabbedInterface/ # 标签页界面演示
├── MN.Shell.MVVM.Sample/ # MVVM 使用示例
├── MN.Shell.MVVM/ # MVVM 核心框架
├── MN.Shell.PluginContracts/ # 插件契约接口
├── MN.Shell/ # 主应用程序
│ ├── Behaviors/ # WPF 行为
│ ├── Controls/ # 自定义控件
│ ├── Core/ # 核心功能
│ ├── Framework/ # 框架组件
│ │ ├── ColorSchemes/ # 配色方案
│ │ ├── Dialogs/ # 对话框
│ │ ├── Docking/ # 停靠布局
│ │ ├── Menu/ # 菜单系统
│ │ ├── MessageBox/ # 消息框
│ │ ├── Messages/ # 消息机制
│ │ ├── StatusBar/ # 状态栏
│ │ └── Tree/ # 树形控件
│ ├── Modules/ # 功能模块
│ │ ├── FolderExplorer/ # 文件资源管理器
│ │ ├── MessageBox/ # 消息框模块
│ │ └── Shell/ # 主界面
│ ├── Themes/ # 主题资源
│ └── Resources/ # 图标资源
```
## 快速开始
### 环境要求
- .NET 6.0 SDK
- Windows 10/11
### 构建项目
```bash
cd src
dotnet restore
dotnet build
```
### 运行演示
```bash
cd src/MN.Shell.Demo
dotnet run
```
## 使用示例
### 创建插件
```csharp
public class MyPlugin : PluginBase
{
protected override void OnLoad()
{
// 注册菜单
Context.UseMenuProvider();
// 注册工具窗口
Context.UseTool();
// 注册服务
Context.UseService();
}
}
```
### 创建文档窗口
```csharp
public class MyDocumentViewModel : DocumentBase
{
public MyDocumentViewModel()
{
Title = "我的文档";
}
}
```
### 创建工具窗口
```csharp
public class MyToolViewModel : ToolBase
{
public override ToolPosition InitialPosition => ToolPosition.Right;
public override double MinWidth => 250;
}
```
### 主题切换
```csharp
// 加载深色主题
colorSchemeLoader.LoadBaseColors(darkColorScheme);
colorSchemeLoader.LoadAccentColors(blueAccentScheme);
```
## 截图


## 许可证

- **[GPL-3.0](https://opensource.org/licenses/GPL-3.0)**
- Copyright 2020 © [Marek Nalepa](https://github.com/mareknalepa/)
## 贡献者
感谢所有为该项目做出贡献的开发者。