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 属性。

相关推荐
冷眼Σ(-᷅_-᷄๑)5 小时前
Path.Combine容易被忽略的细节
c#·.net
林子漾14 小时前
【paper】分布式无人水下航行器围捕智能目标
分布式·wpf
Crazy Struggle16 小时前
.NET 8 强大功能 IHostedService 与 BackgroundService 实战
c#·.net·.net core
喵叔哟19 小时前
【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--访问权限中间件
微服务·中间件·.net
wyh要好好学习20 小时前
C# WPF 记录DataGrid的表头顺序,下次打开界面时应用到表格中
开发语言·c#·wpf
咩咩觉主20 小时前
尽量通俗易懂地概述.Net && U nity跨语言/跨平台相关知识
unity·c#·.net·.netcore
喵叔哟1 天前
【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--角色可访问接口管理
数据库·微服务·.net
lgcgkCQ1 天前
任务调度中心-XXL-JOB使用详解
java·wpf·定时任务·任务调度
Vicky&James1 天前
英雄联盟客户端项目:从跨平台Uno Platform到Win UI3的转换只需要30分钟
github·wpf·跨平台·英雄联盟·winui·unoplatform