DevExpress WPF中文教程:如何解决行焦点、选择的常见问题?

DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。

本文将帮助用户解决使用DevExpress WPF的网格控件时关于行聚焦和选择的常见问题。

获取DevExpress v24.1正式版下载(Q技术交流:532598169)

GridControl自动选择第一行

问题

DevExpress WPF GridControl在启动时自动聚焦第一行。

解决方案

禁用DataControlBase.AllowInitiallyFocusedRow属性,在这种情况下,DevExpress WPF GridControl在启动时不聚焦或不选择任何行。

注意:一旦最终用户聚焦一行,GridControl至少包含一个聚焦行。

用户无法聚焦GridControl中的任何行或单元格

问题

不能聚焦GridControl中的任何单元格或行。

解决方案

若要在GridControl中允许行和单元格焦点,请验证GridControl的DataViewBase.NavigationStyle属性是否设置为Cell。

GridControl在设置数据源后失去选择和焦点

问题

当GridControl的ItemsSource被重置时,GridControl会重新生成它的所有行。

解决方案

要在GridControl中保留选择、焦点、展开的主行和其他行设置,必须手动将这些设置保存到本地变量,您现在可以重置ItemsSource并手动恢复保存的值。

如果控件失去焦点,则焦点元素的背景颜色会改变

问题

当GridControl失去焦点时,所选行的颜色会逐渐消失。

解决方案

将视图的DataViewBase.FadeSelectionOnLostFocus属性设置为false。

条件格式不适用于聚焦行或单元格

问题

格式条件样式的优先级低于聚焦行背景颜色。

解决方案

要显示突出显示的单元格和行,处理TableView.CustomRowAppearance和TableView.CustomCellAppearance事件。

启用多重选择模式时,聚焦行不突出显示

问题

如果使用多行选择并在代码中设置DataControlBase.CurrentItem属性,则聚焦的行不会突出显示;只有虚线边框可见。

解决方案

启用多重选择后,DataControlBase.CurrentItem和DataControlBase.SelectedItem属性引用不同的项。DataControlBase.CurrentItem管理当前关注的项,而DataControlBase.SelectedItem用于被选中的对象,若要聚焦和突出显示一行,请指定这两个属性。

在代码后面设置当前项和当前列属性后,单元格编辑器不会出现

问题

在后面的代码中更改DataControlBase.CurrentItem和DataControlBase.CurrentColumn属性之后,您就不能打开被聚焦单元格的编辑器。如果目标行位于视窗之外,则可能发生这种情况。

解决方案

由于虚拟化机制,GridControl应该为目标数据行初始化相应的项。为了防止在打开单元格编辑器时出现问题,在更新DataControlBase.CurrentItem和DataControlBase.CurrentColumn属性后,使用BeginInvoke方法调用DataViewBase.ShowEditor 方法。

C#

cs 复制代码
gridControl.CurrentItem = Items.First();
Dispatcher.BeginInvoke(new Action(() => {
tableView.ShowEditor(true);
}));
如何禁用单个行和单元格的选择

问题

您希望阻止选择某些行和单元格。

解决方案

处理以下事件:DataViewBase.CanSelectRow, TableView.CanSelectCell, DataViewBase.CanUnselectRow和TableView.CanUnselectCell。

将ViewModel属性绑定到选定项集合的问题

问题

将ViewModel属性绑定到GridControl的DataControlBase.SelectedItems属性,即使在用户选择行之后,该属性也返回null。

解决方案

确保用一个空集合初始化ViewModel的属性,GridControl将选定的项添加到现有集合中,它不会在每次选择更改时创建新集合。

在触控设备上不能选择多行

问题

用户只能在Ctrl或Shift键的帮助下选择行,它们无法仅通过触摸手势选择多行。

解决方案

要启用对触摸友好的多行选择,将DataControlBase.SelectionMode属性设置为MultiSelectMode.MultipleRow。

如何禁用多行或单元格选择

问题

如果DataControlBase.SelectionMode 属性设置为行或单元格,则启用多选择。

解决方案

如果不启用多选功能,请将DataControlBase.SelectionMode设置为None。

GridControl失去键盘焦点

问题

GridControl在其单元格编辑器关闭时失去键盘焦点,如果GridControl位于容器(如ScrollViewer)内,则可能发生此问题,容器控件可以窃取键盘焦点。

解决方案

禁用容器的Focusable 属性。

相关推荐
samble2 小时前
从零搭建灌装监控系统(十七):LiveCharts 实时温度曲线
c#·wpf·mvvm·modbus·工业控制
光泽雨1 天前
WPF中的依赖属性
wpf
海马1 天前
Spring Cloud 开发知识整理
spring·spring cloud·wpf
闻哥1 天前
分布式任务调度框架:XXL-Job / ElasticJob / DolphinScheduler / SchedulerX 架构对比与选型
分布式·架构·wpf
波力海苔夹心脆6752 天前
C# 机器视觉实战:单相机引导机械手精准贴合,从拍照、偏差计算(平移+旋转)到坐标补偿全解
开发语言·经验分享·数码相机·c#·视觉检测·.net
慧都小妮子2 天前
Stimulsoft 2026.4 发布:Markdown 组件、桑基图与 .NET 11 支持
.net·数据可视化·stimulsoft·版本更新·报表控件·桑基图·.net 11
预立科技2 天前
CDN(内容分发网络)知识总结
网络·wpf·cdn
波力海苔夹心脆6753 天前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net
hez20103 天前
一行代码在 .NET 项目里启用 Satori GC
c#·.net·.net core·gc·clr
FuckPatience3 天前
WPF DataGrid 行根据某个属性循环变色动画
wpf