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.CustomRowAppearanceTableView.CustomCellAppearance事件。

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

问题

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

解决方案

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

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

问题

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

解决方案

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

C#

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

问题

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

解决方案

处理以下事件:DataViewBase.CanSelectRow, TableView.CanSelectCell, DataViewBase.CanUnselectRowTableView.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 属性。

相关推荐
雪飞鸿16 小时前
ArrayPoolWrapper简洁、安全的ArrayPool
c#·.net·.net core·原创
我是唐青枫19 小时前
C#.NET MemoryMarshal 深入解析:零拷贝内存重解释、二进制读写与使用边界
c#·.net
步步为营DotNet19 小时前
深入剖析.NET 11 中 Semantic Kernel 于智能后端集成的创新实践
前端·.net·easyui
喵叔哟20 小时前
10.【.NET10 实战--孢子记账--产品智能化】--其余第三方包批量升级
人工智能·.net
武藤一雄20 小时前
WPF中逻辑树(Logical Tree)与可视化树(Visual Tree)到底是什么
microsoft·c#·.net·wpf·.netcore
软泡芙21 小时前
【.NET】创建一个ai聊天应用
人工智能·flask·.net
不会编程的懒洋洋21 小时前
C# IDisposable 和 using
开发语言·笔记·机器学习·c#·.net·visual studio·c#基础
炸炸鱼.21 小时前
ELK 企业级日志分析系统完整部署手册
elk·wpf
唐青枫21 小时前
C#.NET MediatR 深入解析:进程内消息分发、CQRS、通知事件与管道行为实战
c#·.net