DevExpress 网格允许自动创建一个显示复选框的特殊列。它们充当网格行的选择器。它是通过使能TableView
的ShowCheckBoxSelectorColumn
属性来实现的。
有没有办法将此列固定在左侧,以便在水平滚动时始终可见?很明显,它不在.Grid.Columns
集合中,所以还有其他方法吗?
DevExpress 网格允许自动创建一个显示复选框的特殊列。它们充当网格行的选择器。它是通过使能TableView
的ShowCheckBoxSelectorColumn
属性来实现的。
有没有办法将此列固定在左侧,以便在水平滚动时始终可见?很明显,它不在.Grid.Columns
集合中,所以还有其他方法吗?
使用列对象名称并将 FixedStyle 属性设置为 left。示例:colUsername.FixedStyle = FixedStyle.Left;
这似乎是不可能做到的。
这个特殊的“选择器”列存在于视图中VisibleColumns
,但不存在于.Grid.Columns
. VisibleColumns
可以从某个事件中获取它并设置column.Fixed = FixedStyle.Left;
。这个操作最终会调用DataViewBehavior.RebuildVisibleColumnsCore
,它会枚举.Grid.Columns
没有选择器的列,所以最终不会考虑 Fixed 样式。
可能应该固定第一个数据列,因为这也固定选择器列。
devexpress 可能发布了解决方案 -> https://supportcenter.devexpress.com/Ticket/Details/T578471/fix-checkboxselectorcolumn-on-left-side
使用以下代码将静态构造函数添加到主窗口,以将选择器列固定在左侧。
static MainWindow()
{
BaseColumn.FixedProperty.OverrideMetadata(typeof(GridColumn), new FrameworkPropertyMetadata(null, (d, value) => ((GridColumn)d).FieldName == TableView.CheckBoxSelectorColumnName ? FixedStyle.Left : value));
}