个人中心

联系我们

搜索
搜索 登录 免费注册
界面美化
业务优化
开发工具
图像管理
文档管理
Parasoft

新闻资讯

关注工具软件产品最新动态,了解软件开发行业新趋势。

DevExpress Universal v24.1 更新亮点解析(三):WPF 控件

原创
软件开发
来源:DevExpress
WPF
DevExpress
ui界面
报表
图表
数据可视化
excel
2024-06-26
WPF
DevExpress
ui界面
报表
图表
数据可视化
excel

DevExpress WPF 控件 v24.1

  • 可访问性和 UI 自动化

  • DateOnly 和 TimeOnly 类型支持

  • 数据网格

  • 字体图标图像

  • 功能区和条形图

  • PDF 查看器

  • 富文本编辑器

  • 属性网格

  • 电子表格

  • 轻量级主题



可访问性和 UI 自动化

#辅助技术(屏幕阅读器)——兼容性增强

我们针对以下 UI 控件增强了 WPF 辅助功能树(辅助技术获取必要的信息以帮助满足 WCAG 辅助功能指南):

  • 布局控制

  • 选项卡控件

  • 丝带画廊

  • 内置对话框和表单(例如,列过滤器弹出窗口、栏自定义窗口)。


屏幕阅读器(例如 Narrator 和 NVDA)现在可以发音以下操作:

  • 用户使用键盘在 DevExpress WPF Grid 或 WPF TreeList 控件中选择一行/节点。

  • 用户展开/折叠节点。

  • 用户选中/取消选中一个节点。

  • 用户将焦点移至 WPF 功能区栏项。

  • WPF Grid的单元格值在代码中被修改。


屏幕阅读器现在可以访问以下信息:

  • 获得焦点的 WPF Grid 单元格的列/带名称。

  • 在多行选择模式下聚焦 WPF 网格行单元格值。

  • 焦点单元格在可见行/列中的位置。

  • DevExpress WPF Grid 和 TreeList 控件中新项目行的名称。

  • DevExpress WPF Grid 中的活动单元格编辑器类型。

  • DevExpress WPF ThemeMessageBox 文本。

  • DevExpress WPF 步骤进度条项。

 

#无障碍键盘导航

WPF 图表控件

我们改进了 DevExpress WPF Diagram 控件中的键盘导航。用户现在可以使用以下键盘键:

  • Ctrl+ +– 放大画布。

  • Ctrl+ -– 缩小画布。

  • Ctrl+ Space– 展开/折叠焦点容器。

  • F4– 打开属性窗口。


WPF 功能区控件

我们改进了 WPF 功能区控件中的键盘导航。用户可以使用Tab或Arrow键将焦点移至“展开/折叠功能区”按钮(Space和Enter键展开/折叠功能区)。


v24.1 改进了 BarSplitButtonItem 中的键盘导航:

  • Enter– 执行主要操作。

  • Alt+ DownArrow——调用下拉窗口。


WPF 网格控件中的行上下文菜单

按下上下文菜单按钮将调用焦点行的上下文菜单。


WPF Office 导航栏

用户现在可以按下Space或Enter来调用与焦点项目相关的操作。


WPF 手风琴控件

按下Shift+Tab快捷键可聚焦“展开/折叠”按钮。


WPF 轨迹栏编辑器

用户现在可以使用键盘来聚焦范围轨迹栏编辑器的每个滑块。


 

DateOnly 和 TimeOnly 类型支持

DevExpress WPF Data Grid 现在支持DateOnly和TimeOnly数据类型(在 .NET 应用程序中)。这些数据类型具有以下优势(与传统的 DateTime 类型相比):使用清晰、数据库兼容性更高、序列化期间占用空间更少,以及能够缓解与不同时区相关的潜在错误/不一致。


内置 DateOnly/TimeOnly 支持扩展到:

  • 与数据过滤相关的 UI 元素(列过滤器弹出窗口、过滤器编辑器、表达式编辑器、自动过滤行)

  • 条件格式规则

  • 数据摘要

  • 数据分组

  • 未绑定列

  • 标准运算符

  • 面具

  • 搜索



数据网格

#将细胞图像导出至 Excel

WPF 数据网格现在以数据感知导出模式将 绑定和非绑定列单元格内显示的图像(光栅和 SVG)导出为 XLSX 格式。单元格图像将导出为Byte[]数组。要激活此功能,请将AllowCellImages属性设置为DefaultBoolean.True。

C#
XlsxExportOptionsEx options = new XlsxExportOptionsEx();
options.AllowCellImages = DevExpress.Utils.DefaultBoolean.True;
view.ExportToXlsx("grid_export.xlsx", options);

在网格控件生成输出文档之前,处理CustomizeCell事件以自定义单元格图像或用图像替换值(基于导出条件)。


#按颜色和图标集过滤

我们扩展了使用 WPF 网格控件(在 TableView 和 TreeListView 中)时的用户体验。用户可以根据视觉标准(图标集和颜色比例格式条件)快速过滤数据。如果应用了条件格式,用户可以通过列标题的上下文菜单使用此功能:


新的 API 包括:


  • TableView.AllowFormatConditionFiltersMenu – 显示/隐藏与 TableView 中所有列相关的上下文菜单中的“格式条件过滤器”子菜单(如果应用了条件格式)。

  • TreeListView.AllowFormatConditionFiltersMenu – 显示/隐藏与 TreeListView 中所有列相关的上下文菜单中的“格式条件过滤器”子菜单(如果应用了条件格式)。

  • AllowFormatConditionFiltersMenu – 显示/隐藏与特定列相关的上下文菜单中的“格式条件过滤器”子菜单(如果应用了条件格式)。

 

#聚合过滤器

我们为 WPF 数据网格添加了聚合过滤器支持。数据网格公开了一个新的AllowFilterEditorAggregateOperands属性,允许用户按绑定集合数据字段(例如,主从数据)中的项目过滤数据。启用后,网格过滤器编辑器将显示集合属性/字段(SUM、COUNT、MIN、MAX、AVG、EXISTS)的聚合操作数。


您还可以使用AllowedAggregateFilters属性 自定义特定数据列的操作数列表(例如,隐藏不必要的操作数)。


XAML
<dxg:GridColumn FieldName="Genres" AllowedAggregateFilters="Exists, Count"/>



字体图标图像

对字体图标图像的支持首次在我们的 WinForms 产品线中引入(2023 年 12 月)。v24.1 将此功能扩展到我们的 WPF UI 库。


使用 DevExpress WPF 图像选择器(集成在 Visual Studio 中)将字体图标图像分配给各个 UI 控件/元素,或使用我们的 FontIconSource 扩展在代码中执行相同操作。


如果您执行由 DevExpress 提供支持的 WPF 应用程序,它将显示系统中可用的最新图标字体中的图标。例如,如果同时安装了“Segoe Fluent Icons”和“Segoe MDL2 Assets”字体,则“Segoe Fluent Icons”字体将用作默认字体。


使用FontIconSourceExtension.FontFamily属性指定图标字体:

XAML
<dxb:BarButtonItem Glyph="{dx:FontIconSource Glyph=0xf0b4, FontFamily=SegoeMDL2Assets}"/>

您还可以从预定义值(红色、绿色、蓝色、黄色、黑色和白色)中选择图标颜色。这些颜色会自动修改以匹配应用的 DevExpress 主题:

XAML
<dxb:BarButtonItem Glyph="{dx:FontIconSource Glyph=59246, ColorName=Yellow}"/>

是的,您可以使用WpfSvgPalette为图标着色以满足设计偏好:

XAML
<dxb:BarButtonItem Glyph="{dx:FontIconSource Glyph=59246}">
    <dx:WpfSvgPalette.Palette>
        <dx:WpfSvgPalette>
            <SolidColorBrush x:Key="Black" Color="Aqua"/>
        </dx:WpfSvgPalette>
    </dx:WpfSvgPalette.Palette>
</dxb:BarButtonItem>



功能区和条形图

#搜索框

基于功能区的 UI 可以跨多个页面包含数十个命令。如果用户之前没有使用过某个应用,他们可能很难找到合适的操作/命令。为了最大限度地减少使用阻力/学习曲线,v24.1 附带了一个新的 WPF 功能区搜索框。


指定SearchItemDisplayMode属性以激活 WPF 应用程序中的搜索框。我们的 WPF 功能区将搜索字符串与命令内容 ( BarButtonItem.Content) 进行比较以生成搜索结果。


您可以启用项目的HideFromSearch选项以将其从搜索中排除。如需更精细的控制,请使用以下事件:

  • ItemsRequested – 生成可搜索项目列表时触发。此事件允许您在应用搜索条件之前修改搜索结果(例如,根据条件添加其他项目)。

  • ItemFiltering – 每项商品在搜索结果中显示之前触发。此事件允许您将商品从搜索结果中隐藏。

  • ItemsFiltered – 搜索完成时通知。

其他设置包括:

  • SearchDelay – 指定最后一次文本更改和文本搜索之间的延迟(以毫秒为单位)。

  • SearchItemFocusShortcut – 指定用于聚焦搜索框的键盘快捷键(默认快捷键为“Ctrl+F”)。

  • ShowDescriptionInSearchResults - 指定是否显示 DevExpress WPF Ribbon UI(类别 > 页面 > 组)内项目的路径。



PDF 查看器

#签名信息面板

使用我们新的“签名信息”面板,您可以显示已加载文档中每个签名的详细信息并验证签名的有效性。


当您打开文档时,PDF 查看器会验证签名并在签名面板中显示相关状态(有效、无效或未知)。


此外,新面板还显示以下与签名相关的信息:

  • 文件中签名的位置

  • 签名者信息

  • 创建签名的原因

  • 签署文件后签署和修改的日期和时间

  • 证书信息。


#图层

PDF 文档图层允许您选择性地查看或隐藏特定内容部分。图层的主要用途是控制 PDF 文档中呈现的图形对象在不同状态下的可见性(当您查看或打印 PDF 文档时)。


我们添加了“图层”面板以显示文档中包含的所有图层。此新功能允许您通过 UI 更改图层可见性。单击新“图层”面板中图层名称旁边的复选框可显示/隐藏给定的文档图层。可见图层使用“眼睛”图标突出显示;由于文档配置而无法隐藏的图层在其名称旁边没有复选框。


借助PDF Facade API 的强大功能,您还可以在预览或打印 PDF 文档时在运行时访问和管理图层可见性。调用PdfViewerExtensions.GetDocumentFacade扩展方法获取 PdfDocumentFacade 类对象(它允许您更改 PDF 文档而无需访问其内部结构)并使用 PdfDocumentFacade.OptionalContentVisibility集合在代码中更改所需文档图层的可见性状态。


该类PdfDocumentFacade在 DevExpress.Docs.v24.1.dll 程序集中定义。将此程序集添加到您的项目或安装 DevExpress.Document.Processor NuGet 包以使用成员。您需要DevExpress Office File API 订阅或DevExpress Universal 订阅PdfDocumentFacade的许可证才能在生产代码中使用此类。


C#
pdfViewer.LoadDocument("layers.pdf");
PdfDocumentFacade documentFacade = pdfViewer.GetDocumentFacade();
// Set visibility for each Layer
documentFacade.OptionalContentVisibility.Groups[0].Visible = false;
documentFacade.OptionalContentVisibility.Groups[1].Visible = false;
documentFacade.OptionalContentVisibility.Groups[2].Visible = true;


 

富文本编辑器

#导出为可访问的 PDF

在将 Word 文档导出为可访问的 PDF 文件时,我们扩展了对以下元素的可访问性相关支持:

  • 目录标记

  • 元数据字段

  • 替代文本处理

  • 表格

  • 漂浮物体。

使用 Adobe Acrobat Pro 和 PDF Accessibility Checker 2024 进行质量控制。我们的测试文档成功通过了 PDF/UA 兼容性和 WCAG 2.1 合规性验证。


当您指定以下选项时,可立即使用与可访问性相关的导出增强功能PdfUACompatibility:

C#
using System.IO;
using DevExpress.XtraRichEdit;
//...
using(FileStream stream = 
    new FileStream(resultFilePath, FileMode.Create, FileAccess.Write, FileShare.Read)) {
    PdfExportOptions exportOptions = new PdfExportOptions();
    exportOptions.PdfUACompatibility = PdfUACompatibility.PdfUA1;
    
    richEditControl.ExportToPdf(stream, exportOptions);
}

 

#装饰形状

我们为ShapeDecorative类添加了一个属性,用于将文档图形(图片、形状和图表)标记为装饰性图形。装饰性图形增加了视觉趣味,但它们并不提供信息。因此,在生成可访问文档时,您无需为装饰性对象指定 Alt Text(有意义的描述)。


#数学方程式

我们的富文本编辑器现在可在保存文档时保留数学公式。您可以在 WinForms 富文本编辑器中导入包含数学公式的 Word 文档,并将其保存为 RTF 和 OpenXml (.docx/.docm) 格式,且不会丢失内容。


注意:仅当源文档包含数学方程的后备图像时,才会打印或导出数学方程为 PDF。要抑制数学方程导入,请将 DocumentCapabilities.MathEquations属性设置为DocumentCapability.Disabled。


#装订线和镜像边距

DevExpress WPF Rich Text Editor v24.1 允许您指定装订线边距 - 额外的空间,确保装订不会遮挡打印页面上的文本。您可以指定装订线位置(顶部、左侧和右侧)和边距大小。使用 Document.GutterAtTop 、 SectionMargins.GutterPosition和SectionMargins.Gutter属性来满足特定的使用要求。


以下代码片段向文档的第一部分添加了左侧边距:

C#
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;
using DevExpress.Office.Utils;
//...
richEditControl.LoadDocument(@"Documents//Alice.docx");
Document document = richEditControl.Document;
Section firstSection = wordProcessor.Document.Sections[0];
var pageMargins = firstSection.Margins;
pageMargins.GutterPosition = GutterPosition.Left;
pageMargins.Gutter = Units.InchesToDocumentsF(1);
richEditControl.SaveDocument("Alice_formatted.docx", DocumentFormat.OpenXml);

我们新的Document.MarginType属性允许您定义常规或镜像边距类型。如果您在纸张的两面打印并希望装订打印件,请启用镜像边距。


以下代码片段启用了镜像边距并指定了额外的空间值:

C#
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;
using DevExpress.Office.Utils;
//...
richEditControl.LoadDocument(@"Documents//Alice.docx");
Document document = richEditControl.Document;
// Enable mirrored margins
document.MarginsType = MarginsType.Mirrored;
foreach (Section section in richEditControl.Document.Sections) {
    var pageMargins = section.Margins;
    // Set the value for mirrored margins
    pageMargins.Gutter = Units.InchesToDocumentsF(0.5f);
}
richEditControl.SaveDocument("Alice_formatted.docx", DocumentFormat.OpenXml);

还有新的 UI 元素可用。


#图片导出API

v24.1 包含新的跨平台 API,用于将 Word 文档页面导出为图像。此新功能允许您生成文档预览。使用我们的新 API,您可以将文档页面转换为光栅和矢量图像(PNG、JPEG、BMP、多页 Tiff、emf),将它们保存为磁盘上的物理文件或获取图像流列表以便在代码中进一步处理。您还可以设置图像背景颜色、修改输出图像分辨率或生成具有指定大小的缩略图。


新的 API 可通过对象的RichEditDocumentServerExtensions.ExportToImageDocument扩展方法获得。


请注意,该类RichEditDocumentServerExtensions是在 DevExpress.Docs.v24.1.dll 程序集中定义的。将此程序集添加到您的项目或安装“DevExpress.Document.Processor”NuGet 包以使用成员。您需要DevExpress Office File API 订阅或DevExpress Universal 订阅RichEditDocumentServerExtensions的许可证才能在生产代码中使用此类。


以下代码片段将文档的第一页导出为具有指定大小和 JPEG 格式的图像:

C#
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.Export.Image;
using DevExpress.Drawing;
richEditControl.LoadDocument(@"C:\Documents\Alice.docx");
//...
RichEditImageExportOptions options = new RichEditImageExportOptions();
options.Format = DXImageFormat.Jpeg;
options.PageRange = "1";
options.LargestEdgeLength = 1080;
richEditControl.Document.ExportToImage(@"C:\Documents\Image.jpeg", options);

 

#将文档页面导出为 SVG

我们新的图像导出 API 允许您将文档页面导出为 SVG。使用该RichEditImageExportOptions.Format选项将 SVG 设置为目标图像格式。


C#
RichEditImageExportOptions options = new RichEditImageExportOptions();
options.Format = DXImageFormat.Svg;
options.PageRange = "1";
richEditControl.Document.ExportToImage(@"C:\Documents\Image.svg", options);

用户界面还可以进行 SVG 导出 - 打开“打印预览”对话框,单击“导出到图像”按钮,在“图像选项”对话框中选择 SVG 格式并完成文档导出。


 

属性网格

#自定义行外观

我们添加了PropertyGridControl.RowStyle属性。使用此属性可以自定义行外观/样式设置。


正如您对 DevExpress WPF 网格控件的期望一样,您可以完全控制行的外观。您可以根据条件应用行样式(使用 WPF PropertyGrid 的RowStyleSelector属性或基于标准 WPF 触发器的技术),也可以使用新的AlternationCount属性来交替行样式。


XAML
<dxprg:PropertyGridControl ...
                AlternationCount="3">
    <dxprg:PropertyGridControl.RowStyle>
        <Style TargetType="dxprg:RowControl">
            <Style.Triggers>
                <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                    <Setter Property="Background" Value="#122C2C2C"/>
                </Trigger>
                <Trigger Property="ItemsControl.AlternationIndex" Value="2">
                    <Setter Property="Background" Value="LightGray"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </dxprg:PropertyGridControl.RowStyle>
</dxprg:PropertyGridControl>

 


电子表格

#辅助功能增强功能 - 装饰形状

我们为ShapeDecorative类添加了一个属性,用于将文档图形(图片、形状和图表)标记为装饰性图形。装饰性图形增加了视觉趣味,但它们并不具有信息性。因此,在生成可访问文档时,您无需为装饰性对象指定 Alt Text(有意义的描述)。


#对齐和分布式文本对齐

v24.1 增加了对电子表格单元格内对齐和分布式水平对齐类型的支持。使用这些对齐选项的 Excel 文件可以打印并导出为 PDF。


您可以使用Cell.Alignment.Horizontal属性在代码中指定水平对齐。


以下代码片段在代码中指定对齐:

C#
var workbook = new Workbook();
var worksheet = workbook.Worksheets[0];
Cell cellA1 = worksheet.Cells["A1"];
cellA1.Value = "Justified and top";
cellA1.Alignment.Horizontal = SpreadsheetHorizontalAlignment.Justify;
cellA1.Alignment.Vertical = SpreadsheetVerticalAlignment.Top;
workbook.ExportToPdf("Result.pdf");

 

#按颜色排序和过滤

DevExpress WPF 电子表格附带增强的过滤和排序相关功能。我们添加了新的 API,可以按背景和字体颜色对工作簿数据进行排序和过滤。按单元格颜色过滤/排序的单元格范围也可以打印并导出为 PDF。


我们的排序 API 包括新的Worksheet.Sort方法重载,旨在按字体颜色或填充设置(背景颜色和图案)对指定范围进行排序。


以下代码片段对两个单元格范围内的单元格值进行排序 - 第一个单元格按红色字体颜色排序,第二个单元格按范围内第一个单元格指定的填充设置排序:

C#
spreadsheetControl.LoadDocument("sort-filter.xlsx");
Worksheet worksheet = spreadsheetControl.ActiveWorksheet;
// Sort cell range by font color 
worksheet.Sort(worksheet["B2:B10"], Color.Red);
// Sort cell range by fill color
worksheet.Sort(worksheet["D2:D10"], worksheet["D2"].Fill);

要按字体或背景颜色过滤单元格,您需要将自动过滤器应用于所需的单元格范围或表格。完成后,您需要从集合中获取所需的列AutoFilter.Columns并调用以下方法之一:

  • AutoFilterColumn.ApplyFillColorFilter(颜色)

  • AutoFilterColumn.ApplyFillFilter(填充)

  • AutoFilterColumn.ApplyFontColorFilter(颜色)

以下代码片段对单元格范围和表格都使用了这些方法:

C#
spreadsheetControl.LoadDocument("sort-filter.xlsx");
Worksheet worksheet = spreadsheetControl.ActiveWorksheet;
// Apply an auto-filter to a cell range and filter the first column by font color
worksheet.AutoFilter.Apply(worksheet["B1:B10"]);
worksheet.AutoFilter.Columns[0].ApplyFontColorFilter(Color.Red);
// Create a table, apply an auto-filter and filter the first column by fill color
Table table = worksheet.Tables.Add(worksheet["B12:B21"], true);
table.AutoFilter.Apply();
table.AutoFilter.Columns[0].ApplyFillColorFilter(Color.Red);

此外,我们的新 API 允许您在过滤范围内对数据进行排序(启用自动过滤时)并同时按单元格的值/颜色对其进行排序(使用排序条件)。


#将单元格范围导出至 SVG

在此版本中,我们增强了CellRangeExtensions.ExportToImage方法并增加了对 SVG 图像格式的支持。


该类CellRangeExtensions在 DevExpress.Docs.v24.1.dll 程序集中定义。将此程序集添加到您的项目或安装 DevExpress.Document.Processor NuGet 包以使用CellRangeExtensions成员。要在生产代码中使用此类,您需要一个有效的DevExpress Office File API或DevExpress Universal Subscription。


C#
spreadsheetControl.LoadDocument("InvestmentPortfolio.xlsx", DocumentFormat.Xlsx);
Worksheet worksheet = spreadsheetControl.ActiveWorksheet;
worksheet.Range["B18:I30"].ExportToImage("cell_range_image.svg", ImageFileFormat.Svg);

用户界面还可以进行 SVG 导出 - 打开“打印预览”对话框,单击“导出到图像”按钮,在“图像选项”对话框中选择 SVG 格式并完成文档导出。


 

轻量级主题

#获取轻量级主题调色板颜色

使用 v24.1,您可以轻松访问作为轻量级主题一部分提供的现有调色板的颜色信息。此功能扩展到自定义调色板,允许您使用反映 WPF 应用程序独特身份的颜色。


联系我们

周一至周日 8:00-23:00

免费热线

023-62585653

张经理:13082556879

罗经理:17558866126

许经理:13057566525

开发外包

ERP-一体化

小程序

企业微信客服

版权所有:重庆庚乾信息科技有限公司 ©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508

版权所有:重庆庚乾信息科技有限公司

©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508