WPF 控件 v22.2
.NET 6.0/7.0 - Windows
v22.2 需要 .NET 6 和 Visual Studio 2022 (v17.0) 或更高版本。
v22.2 支持.NET 7.0。
这不会以任何方式影响 .NET Framework 客户— 我们的产品程序集将在此发布周期 (v22.2) 中继续以 .NET Framework 4.5.2 为目标。
主题
Windows 11 深色主题
我们新的 Windows 11 深色主题基于 Windows 11 深色模式。

自动将主题从浅色模式切换到深色模式
我们添加了使用 Windows 应用程序模式的新系统主题,并自动将当前主题从浅色模式切换到深色模式(反之亦然)。此自动切换选项现在可用于以下 DevExpress 主题:
• Windows 11
• Windows 10
• Office 2019 / Office2016SE
• Visual Studio 2019 / 2017
数据网格
总摘要面板位置
我们新的TotalSummaryPosition属性指定摘要面板在视图中的位置。TableView、TreeListView 和 CardView 现在可以根据要求在顶部或底部显示摘要面板。
在主从模式中,您可以将详细信息网格的TotalSummaryPosition属性设置为“顶部”以固定摘要面板,以便在用户滚动浏览各个详细信息行时它仍然可见。

运行演示
要执行此演示,您必须先安装 DevExpress WPF 产品库 。
数据过滤 - 性能增强
以下 UI 元素的性能属性已得到增强:
• 过滤器编辑器
• 下拉过滤器
• 过滤面板
• MRU 过滤器列表
下图比较了发布周期之间的性能数据(过滤器 UI 元素包含 500 个项目)。

异步数据编辑
当使用服务器模式或即时反馈模式时,您现在可以在我们的WPF 数据网格 中合并异步数据编辑。DialogEditFormBehavior允许您异步执行以下操作:
• 初始化编辑表单对话框 ( CreateEditItemViewModelCommand )。
• 验证更改或添加新行 ( ValidateRowCommand )。
• 删除数据行 ( ValidateRowDeletionCommand )。
XAML
<dxg:GridControl ...>
<dxmvvm:Interaction.Behaviors>
<dxg:DialogEditFormBehavior x:Name="EditFormBehavior" KeyProperty="Id"
CreateEditItemViewModelCommand="{Binding CreateEditEntityViewModelCommand}"
ValidateRowCommand="{Binding ValidateRowCommand}"
ValidateRowDeletionCommand="{Binding ValidateRowDeletionCommand}"
AllowCancelAsyncOperations="True">
<!-- ... -->
</dxg:DialogEditFormBehavior>
</dxmvvm:Interaction.Behaviors>
</dxg:GridControl>
C#
[Command]
public void CreateEditEntityViewModel(CreateEditItemViewModelArgs args) {
args.GetViewModelAsync = GetViewModel(args);
}
[Command]
public void ValidateRow(EditFormRowValidationArgs args) {
args.ValidateAsync = ValidateRow(args);
}
[Command]
public void ValidateRowDeletion(EditFormValidateRowDeletionArgs args) {
args.ValidateAsync = ValidateDeletion(args);
}
async Task<IEditItemViewModel> GetViewModel(CreateEditItemViewModelArgs args) {
// ...
}
async Task ValidateRow(EditFormRowValidationArgs args) {
// ...
}
async Task ValidateDeletion(EditFormValidateRowDeletionArgs args) {
// ...
}
未绑定列 - 自定义类型
我们新的UnboundDataType属性允许您显式设置未绑定的列类型。您现在可以指定以前不可用的类型,例如“TimeSpan”或“DateTimeOffset”。
XAML
<Window ...
xmlns:dxg="https://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<dxg:GridControl ...>
<!-- ... -->
<dxg:GridColumn FieldName="RemainingTime"
UnboundDataType="{x:Type sys:TimeSpan}"
UnboundExpression="[RequiredDate]-[OrderDate]"/>
</dxg:GridControl>
树列表
子节点的异步加载
DevExpress WPF 数据网格中的 WPF TreeList 控件和 TreeListView 现在可以异步加载数据。TreeList 在后台线程中获取子节点,并在获取操作进行时显示等待指示器。
正如您想象的那样,异步子节点加载有助于防止不需要的屏幕“锁定”,并允许您提供响应速度更快的 WPF 解决方案。

运行演示
要执行此演示,您必须先安装 DevExpress WPF 产品库。
性能改进
我们改进了 WPF TreeList 控件的BeginDataUpdate / EndDataUpdate实现。与以前的版本相比,批量修改现在的速度是原来的两倍。以下内部测试结果有助于说明此版本的性能优势(1,000 个项目添加到具有 1M 加载节点的 TreeList 控件)。

数据编辑器
新路径编辑器
我们新的路径编辑器允许您和您的用户轻松指定文件或文件夹的路径。用户可以在编辑框中输入路径信息,浏览文件系统以选择文件/文件夹,或将文件/文件夹拖放到编辑器中。
功能包括:
• 可配置文件/文件夹浏览对话框(打开文件、保存文件、文件夹浏览器)
• 文件/文件夹路径验证
• 拖放文件/文件夹支持
• 显示系统和自定义图标
是的,您可以在 DevExpress 容器控件中使用 WPF 路径编辑器,例如我们的 WPF 数据网格、WPF 树列表等。

运行演示
要执行此演示,您必须先安装 DevExpress WPF 产品库 。
按钮 - 为异步操作提供视觉反馈
DevExpress WPF 按钮控件(例如,简单、下拉、拆分按钮)现在可以指示绑定的异步操作(任务)的进度。当操作正在进行时,按钮会显示等待指示符。这使您可以为数据密集型操作提供视觉反馈。
使用AsyncDisplayMode属性启用此功能。您可以将此属性设置为 'Wait' 以显示等待指示器或设置为 'WaitCancel' 'WaitCancel' 允许用户取消给定的操作。

运行演示
要执行此演示,您必须先安装 DevExpress WPF 产品库 。
密码箱 - 密码显示
我们的 WPF 密码框附带了一个新的密码显示按钮。用户可以单击显示按钮来显示密码。长按按钮会显示密码,直到松开。

运行演示
要执行此演示,您必须先安装 DevExpress WPF 产品库 。
日期导航器 - 性能改进
日期导航器现在可以比以往更快地切换视图。在我们的WPF 调度程序控件(如果绑定到多月日期导航器)中导航日期时,用户会注意到显着的性能提升。

文本编辑器的自定义蒙版
我们为所有 WPF 文本编辑器引入了一个新的CustomMask事件。当我们预定义的掩码类型不能满足您的业务需求时,处理此事件以合并自定义模式。
事件参数允许您获取输入文本、触发事件的用户操作(例如,插入、删除、退格等)以及操作本身的结果。您还可以处理编辑器选择的文本/插入符号位置,或完全取消编辑操作。
XAML
<dxe:TextEdit MaskType="Custom" CustomMask="OnCustomMask"/>
C#
void OnCustomMask(object sender, DevExpress.Xpf.Editors.CustomMaskEventArgs e) {
// Process user input.
// This example demonstrates how to allow users to enter only Latin letters and
// capitalize entered characters.
if (e.ActionType == CustomTextMaskInputAction.Init || e.IsCanceled == true)
return;
var textInfo = CultureInfo.InvariantCulture.TextInfo;
if (!Regex.IsMatch(e.InsertedText, @"^[a-zA-Z]+$") && e.ActionType == CustomTextMaskInputAction.Insert)
e.Cancel();
else e.SetResult(textInfo.ToUpper(e.ResultEditText), e.ResultCursorPosition);
}
运行演示
要执行此演示,您必须先安装 DevExpress WPF 产品库。
文本编辑中的新日期时间掩码
新的日期时间掩码可帮助您编辑DateTimeOffset、DateOnly和TimeOnly结构。使用这些掩码之一时,文本编辑器会自动将其 EditValue 转换为适当的类型(以便轻松地将其绑定到视图模型中的属性)。
DateOnly 和 TimeOnly 掩码类型可用于 .NET 6+ 应用程序。
日期编辑 - 在代码中指定默认视图
我们新的SelectionView允许您在代码中指定默认视图(月、年、年或年范围)。
渝公网安备50010702505508