2.4 KiB
2.4 KiB
applyTo
| applyTo |
|---|
| **/*ViewModel.cs,**/*.xaml,MainShell/Converter/**/*.cs,MainShell/Home/**/*.cs,MainShell/ParaSetting/**/*.cs,MainShell/DeviceMaintance/**/*.cs,MainShell/PageCalib/**/*.cs,MainShell/Manual/**/*.cs |
WPF and MVVM Instructions
Framework
This repository uses WPF with Stylet.
中文说明
本项目 WPF 框架使用 Stylet,MVVM 相关代码必须遵循 Stylet 的约定。
ViewModel Rules
- ViewModel classes should inherit from
ScreenorPropertyChangedBase - Follow Stylet naming convention:
- XxxView ? XxxViewModel
- Do not introduce patterns that conflict with Stylet conventions
中文说明
ViewModel 规则:
- ViewModel 继承
Screen或PropertyChangedBase - View 和 ViewModel 按命名约定自动绑定
- 不要引入与 Stylet 冲突的 MVVM 模式
State Management
- Prefer bindable state objects to hold UI state
- Do not scatter many unrelated primitive bindable properties if a cohesive state model is more suitable
- Distinguish device input state and output state clearly
中文说明
状态管理建议:
- 优先使用可绑定状态对象统一承载界面状态
- 如果多个属性本质上属于一个状态域,不要分散定义在 ViewModel 中
- 输入状态和输出状态要明确分离
IoC Rules
- IoC registrations belong in
StartBootstrapper.ConfigureIoC() - Singleton services should use
[Singleton]or be registered as singleton in IoC - New services must be registered consistently with existing project patterns
中文说明
IoC 规则:
- IoC 注册统一在
StartBootstrapper.ConfigureIoC()中完成 - 单例服务通过
[Singleton]或容器单例注册 - 新增服务必须遵循现有注册风格
XAML Rules
- Do not manually implement
InitializeComponent - Do not work around WPF compilation issues by writing manual code-behind loaders
- Fix page compilation through project file and proper WPF item setup
- Value converters should be placed in
Converter/and namedXxxConverter
中文说明
XAML 规则:
- 不要手写
InitializeComponent - 不要通过 code-behind 手工加载页面绕过编译问题
- 页面编译问题应通过 csproj 或 WPF 配置修复
- 转换器放在
Converter/下,并使用XxxConverter命名
Language Resource Rules
Project language resources are loaded from:
Language/MaxwellFramework_{lang}.xamlLanguage/MXJM_{lang}.xaml
Keep generated UI code compatible with the existing localization mechanism.
中文说明
多语言资源加载遵循现有机制:
- 平台语言包:
MaxwellFramework_{lang}.xaml - 项目语言包:
MXJM_{lang}.xaml
生成 UI 代码时不要破坏现有多语言机制。