看DevExpress WPF 视图模型生成器是如何支持Prism & MVVM Light的
复杂视图中的视图模型包含许多属性、命令和重复的接口实现,为所有这些成员编写代码不仅低效,而且可能会导致拼写错误等。幸运的是,代码编写不断发展,新技术可以让您节省时间,保持代码库紧凑、干净和可读。编译时生成器就是这样一种技术,生成器在您输入代码时无缝工作,甚至无需构建项目或执行任何操作即可生成代码。
DevExpress WPF的MVVM 代码生成器自动创建基于方法的命令、基于字段的属性,并实现 INotifyPropertyChanged、INotifyPropertyChanging、IDataErrorInfo、ISupportServices 和 ISupportParentViewModel 等接口。对于使用 DevExpress MVVM 框架的用户来说,这是一个很好的补充。尽管如此,我们的组件也与其他 MVVM 框架兼容,如果您使用的是 Prism 或 MVVM Light,仍然可以使用我们的代码生成器。
Prism代码生成器
Prism View Model代码生成器可帮助您使用所有基本视图模型功能:命令、属性和通知,它使用 Prism 的 DelegateCommand 类来生成命令。 除此之外,生成器可以自动实现 Prism 的 IActiveAware 接口,将 GenerateViewModel 分配给您的模型类并将 ImplementIActiveAware 设置为 true 就足够了:
Base View Model
[GenerateViewModel(ImplementIActiveAware = true)] partial class ViewModel { // ... void OnIsActiveChanged() { // ... } }
Generated View Model
partial class ViewModel : INotifyPropertyChanged, IActiveAware { // ... bool isActive; public bool IsActive { get => isActive; set { isActive = value; OnIsActiveChanged(); IsActiveChanged?.Invoke(this, EventArgs.Empty); } } public event EventHandler? IsActiveChanged; // ... }
您需要声明 DevExpress.Mvvm.CodeGenerators.Prism 命名空间才能使用 Prism 代码生成器。
MVVM Light代码生成器
除了标准的视图模型功能,MVVM 生成器可以自动创建一个 Messenger 并实现 ICleanup 接口:
Base View Model
[GenerateViewModel(ImplementICleanup = true)] partial class ViewModel { // ... void OnCleanup() { // ... } }
Generated View Model
partial class ViewModel : INotifyPropertyChanged, ICleanup { // ... protected IMessenger MessengerInstance { get; set; } = Messenger.Default; public virtual void Cleanup() { MessengerInstance.Unregister(this); OnCleanup(); } // ... }
声明 DevExpress.Mvvm.CodeGenerators.MvvmLight 命名空间来将 View Model Generator 与 MVVM Light 一起使用。
DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。
DevExpress技术交流群6:600715373 欢迎一起进群讨论
更多DevExpress线上公开课、中文教程资讯请上中文网获取
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2021-05-13 Web开发小技巧放送 - 如何使用包含运算符进行过滤
2021-05-13 WinForm应用界面开发入门指南 - Office启发式用户界面
2020-05-13 Winforms界面开发v20.1——兼容.Net Core 5