WPF应用界面开发新风向 - 如何支持.NET Core & .NET 5
DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。
2021中国区首发 · DevExpress v21.1新版发布会报名开启,名额有限先到先得哦~
DevExpress WPF v21.1 正式版日前已发布,DevExpress图像库现在可用于 .NET Core 和 .NET 5、升级MVVM功能等,欢迎点击下载最新版体验!
.NET Core & .NET 5
XAML 设计器 - 建议操作
建议操作现在在Visual Studio Preview 版本中可用,并包括以下新功能:
- 支持非可视元素(工具栏和功能区项目、数据网格列)
- 支持嵌套元素(例如,GridControl 现在可以使用 TableView 选项)
- 新属性编辑器
- 外观标签

XAML 设计器 – 图像库
DevExpress图像库现在可用于 .NET Core 和 .NET 5,图像库包括数千个高质量的光栅和矢量图标 (SVG)。 可以通过Suggested Actions、Properties窗口和Visual Studio 的主菜单访问该库。

MVVM
编译时 ViewModel 生成
此功能使用 .NET 5 中引入的 C# 源代码生成器在编译时为您的 ViewModel 生成样板代码。 命令声明、属性更改通知、IDataErrorInfo 实现和服务支持将自动添加链接到ViewModel 的分部类。
C#
// manual part using DevExpress.Mvvm.CodeGenerators; [GenerateViewModel] public partial class ViewModel { [GenerateProperty] int _Count; [GenerateCommand] public void Increment() => Count++; } // generated part partial class ViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void RaisePropertyChanged(PropertyChangedEventArgs e) => PropertyChanged?.Invoke(this, e); public int Count { get => _Count; set { if(EqualityComparer<int>.Default.Equals(_Count, value)) return; _Count = value; RaisePropertyChanged(CountChangedEventArgs); } } DelegateCommand incrementCommand; public DelegateCommand IncrementCommand { get => incrementCommand ??= new DelegateCommand(Increment, null, true); } static PropertyChangedEventArgs CountChangedEventArgs = new PropertyChangedEventArgs(nameof(Count)); }
编译时代码生成共享与运行时生成的 POCO ViewModel 和标准 ViewModelBase 后代相关的好处:
- ViewModel 没有重复的样板代码
- 生成的代码存储在部分类中,您可以轻松查看和调试代码
- ViewModel 类在设计时和运行时是相同的
- 最佳运行时性能,因为类是提前生成的
EventToCommand - 事件参数返回转换
将事件参数传递给命令时,您可以定义反向转换逻辑并将值从命令返回到事件:
XAML
<dxe:TextEdit> <dxmvvm:Interaction.Behaviors> <dxmvvm:EventToCommand EventName="Validate" Command="{Binding ValidateCommand}" EventArgsConverter={local:ValidateEventArgsConverter} /> </dxmvvm:Interaction.Behaviors> </dxe:TextEdit>
C#
public class ValidateEventArgsConverter : EventArgsConverterBase<ValidationEventArgs> { protected override void ConvertBack(object sender, ValidationEventArgs args, object parameter) { if (parameter is ValidationInfo info && info.IsValid) args.SetError(info.ErrorContent, info.ErrorType); } ... }
当事件需要返回值并且特定于 UI 的事件参数无法传递给 ViewModel 时,这应该会简化这种情况。 此类事件的示例包括验证、自定义排序、自定义显示文本等。
DevExpress技术交流群3:700924826 欢迎一起进群讨论
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2020-06-18 如何使用DevExpress Winforms自定义图标?这篇文章教你一招
2019-06-18 移动UI控件Telerik UI for Xamarin发布R2 2019|引入Map控件
2019-06-18 DevExpress v19.1新版亮点——WinForms篇(五)