WPF(Windows Presentation Foundation)相比 MFC,更强调:
- MVVM
- 数据绑定
- 组件化
- UI 与逻辑解耦
因此 WPF 的"应用层框架"比 MFC 丰富很多。
目前主流 WPF 框架主要围绕:
text
MVVM
模块化
依赖注入
导航
事件总线
插件化
展开。
一、WPF 最主流的应用框架
1. Prism(最经典、最主流)
由微软 Patterns & Practices 推出,后来由社区维护。
这是:
企业级 WPF 最常见框架
Prism 核心功能
MVVM
提供:
BindableBaseDelegateCommand- ViewModelLocator
模块化
支持:
text
主程序
├── 模块A
├── 模块B
└── 模块C
动态加载 DLL。
非常适合:
- 工业软件
- 平台软件
- 插件系统
Region 区域导航
非常经典:
xml
<ContentControl prism:RegionManager.RegionName="MainRegion"/>
然后:
cpp
_regionManager.RequestNavigate("MainRegion", "HomeView");
实现页面切换。
EventAggregator
类似消息总线:
cpp
_eventAggregator.GetEvent<TestEvent>().Publish();
模块间解耦。
DI 容器
支持:
- Unity
- DryIoc
- Autofac
Prism 适合:
- 大型桌面软件
- 工业平台
- 插件化系统
- 多模块系统
二、MVVM Light(经典轻量级)
以前特别流行。
作者:
Laurent Bugnion
特点:
- 轻量
- 学习简单
- MVVM 入门经典
核心:
- ViewModelBase
- RelayCommand
- Messenger
现在状态
热度下降。
因为:
- Prism 更强
- CommunityToolkit.Mvvm 更现代
但很多老项目仍在用。
三、CommunityToolkit.Mvvm(现在非常热门)
微软官方社区工具包。
官方项目:
特点
极简
代码非常少:
cpp
[ObservableProperty]
private string name;
自动生成:
cpp
public string Name { get; set; }
Source Generator
使用:
- Roslyn 源生成器
性能很好。
Command 自动生成
cpp
[RelayCommand]
void Save()
{
}
自动生成 ICommand。
适合
- 新项目
- 中小项目
- 现代 .NET
四、Caliburn.Micro
非常有特点的 WPF 框架。
核心思想:
Convention over Configuration
即:
"约定优于配置"
特点
自动绑定:
text
Button Name="Save"
↓
自动绑定到
Save() 方法
减少大量 XAML。
优点
开发效率高。
缺点
隐式规则较多:
- 大项目维护难
- 新人不容易理解
五、ReactiveUI
现代响应式框架。
核心:
text
Reactive Programming
结合:
- Rx.NET
- MVVM
特点
数据流驱动:
cpp
this.WhenAnyValue(x => x.Name)
适合:
- 高频状态变化
- 实时系统
- 复杂异步
缺点
学习曲线较高。
六、Stylet
轻量 MVVM 框架。
特点:
- 比 Caliburn 简洁
- 比 Prism 轻
适合:
- 中小项目
七、Catel
企业级 MVVM 框架。
功能非常多:
- MVVM
- Validation
- IoC
- Messaging
但现在热度一般。
八、AvalonDock(布局框架)
这不是完整应用框架。
但:
WPF IDE 风格布局几乎都用它
项目:
支持:
- Dock
- 浮动窗口
- VS 风格布局
很多工业软件会:
text
Prism + AvalonDock
组合。
九、MahApps.Metro(UI 风格框架)
现代 Metro 风格 UI。
项目:
提供:
- Metro 风格窗口
- Dialog
- Theme
- 控件美化
常搭配:
text
Prism + MahApps.Metro
十、MaterialDesignInXaml
Material Design 风格。
项目:
效果:
- Google Material UI
现在非常流行。
十一、工业软件常见组合
方案1:传统大型工业软件
text
Prism
+ DryIoc
+ AvalonDock
+ MahApps
特点:
- 插件化
- IDE风格
- 多窗口
方案2:现代轻量项目
text
CommunityToolkit.Mvvm
+ MaterialDesign
特点:
- 开发快
- 代码少
方案3:高实时系统
text
ReactiveUI
适合:
- 实时数据
- 高频刷新
十二、WPF 框架核心思想
WPF 领域最重要的是:
1. MVVM
核心:
text
View
ViewModel
Model
2. 数据绑定
WPF 最大优势:
xml
<TextBox Text="{Binding Name}"/>
3. ICommand
替代传统按钮回调:
xml
<Button Command="{Binding SaveCommand}"/>
4. Dependency Injection
大型项目必备。
5. Event Bus
模块解耦。
十三、现在 WPF 的行业定位
WPF 目前仍大量用于:
- 工业自动化
- 上位机
- 医疗设备
- 金融终端
- 半导体设备
- 测试平台
因为:
- Windows生态强
- UI能力强
- GPU硬件加速
- 开发效率高
十四、WPF vs Qt vs MFC
| 特性 | WPF | Qt | MFC |
|---|---|---|---|
| UI现代化 | 强 | 强 | 弱 |
| MVVM | 原生支持 | 一般 | 弱 |
| 数据绑定 | 非常强 | 一般 | 很弱 |
| Win32集成 | 强 | 一般 | 最强 |
| 跨平台 | 无 | 强 | 无 |
| 工业软件 | 很多 | 非常多 | 老项目多 |
| 学习难度 | 中 | 中高 | 高 |
十五、当前最推荐路线
如果现在新做 WPF 项目:
推荐:
text
CommunityToolkit.Mvvm
+ MaterialDesign
大型项目:
text
Prism
+ DryIoc
+ AvalonDock