彩票走势图

界面组件DevExpress WPF——如何轻松创建一个WPF视图模型?

翻译|使用教程|编辑:龚雪|2022-09-06 09:47:14.640|阅读 75 次

概述:本文将为大家介绍如何使用DevExpress WPF控件中的MVVM代码生成器轻松创建一个WPF视图模型,欢迎下载相关组件体验~

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。

DevExpress WPF v22.1正式版下载

DevExpress WPF控件v21.1版本开始,包含了一个,这个代码生成器允许您在编译时为视图模型生成样板代码。

界面组件DevExpress WPF——如何轻松创建一个WPF视图模型?

Microsoft在 C# 9中引入了 ,您可以使用Source Generator分析用户代码并在编译期间生成新的源文件,我们利用这项 Microsoft 技术帮助您开发视图模型并立即获得生成的代码。

请注意,DevExpress MVVM框架已经包含了多种创建View Models的方法(例如基于Emit Reflection的POCO View Models在运行时创建View Models)。

这种新方法为您提供了许多重要的好处:

  • 您可以在 Visual Studio 中查看生成的代码和调试。
  • 生成的代码是在编译期间生成的,并且在应用程序启动时可用,因此这种新方法提高了启动性能。
使用生成的代码创建视图模型

要生成完整的视图模型,您需要定义一个指定所需逻辑的存根视图模型类,View Model Code Generator 分析您的实现和应用属性以生成最终的 View Model 类,以及所有必需的样板代码。

基础的视图模型

using DevExpress.Mvvm.CodeGenerators;

[GenerateViewModel]
partial class ViewModel {
[GenerateProperty]
string username;
[GenerateProperty]
string status;

[GenerateCommand]
void Login() => Status = "User: " + Username;
bool CanLogin() => !string.IsNullOrEmpty(Username);
}

生成的视图模型

  • 属性
  • 属性变更通知
  • 命令声明
  • , , , 实现
partial class ViewModel : INotifyPropertyChanged {
public event PropertyChangedEventHandler? PropertyChanged;

protected void RaisePropertyChanged(PropertyChangedEventArgs e) => PropertyChanged?.Invoke(this, e);

public string? Username {
get => username;
set {
if(EqualityComparer<string?>.Default.Equals(username, value)) return;
username = value;
RaisePropertyChanged(UsernameChangedEventArgs);
}
}

public string? Status {
get => status;
set {
if(EqualityComparer<string?>.Default.Equals(status, value)) return;
status = value;
RaisePropertyChanged(StatusChangedEventArgs);
}
}

DelegateCommand? loginCommand;
public DelegateCommand LoginCommand {
get => loginCommand ??= new DelegateCommand(Login, CanLogin, true);
}

static PropertyChangedEventArgs UsernameChangedEventArgs = new PropertyChangedEventArgs(nameof(Username));
static PropertyChangedEventArgs StatusChangedEventArgs = new PropertyChangedEventArgs(nameof(Status));
}
方法

最佳的发展路线是将由每个单独的WPF项目驱动:

  • 如果您使用最新的 C# 版本和 .NET Framework v4.6.1+ 或 .NET Core v3.0+,请考虑查看在编译时生成的模型。
  • 如果您想保持对视图模型的完全控制,可以从基类集成您的视图模型。
  • 如果您的项目不符合上述要求,或者您使用的是 Visual Basic(并且仍希望避免使用样板代码),那么 POCO 视图模型是一个不错的选择。

DevExpress技术交流群6:600715373      欢迎一起进群讨论

DevExpress技术套包全新上线,冰点折扣有优惠

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP