


























DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。
从DevExpress WPF控件v21.1版本开始,包含了一个View Model Code Generator,这个代码生成器允许您在编译时为视图模型生成样板代码。

Microsoft在 C# 9中引入了Source Generators ,您可以使用Source Generator分析用户代码并在编译期间生成新的源文件,我们利用这项 Microsoft 技术帮助您开发视图模型并立即获得生成的代码。
请注意,DevExpress MVVM框架已经包含了多种创建View Models的方法(例如基于Emit Reflection的POCO View Models在运行时创建View Models)。
这种新方法为您提供了许多重要的好处:
要生成完整的视图模型,您需要定义一个指定所需逻辑的存根视图模型类,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项目驱动:
DevExpress技术交流群6:600715373 欢迎一起进群讨论
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。