Skip to content

重新定义单元格双击行为

默认情况下,双击一个单元格,使单元格进入编辑状态,来编辑单元格的值,但是,有些单元格类型并不支持与单元格的值绑定(例如菜单,图文列表等),此时,双击进入编辑状态的行为就比较奇怪。

单元格插件可以通过实现 IDefaultEditAction 接口,可以定制单元格默认的双击行为

示例代码

修改 MyPluginCellType.cs 文件

csharp
    [Designer("MyPlugin.Designer.MyPluginCellTypeDesigner, MyPlugin")]
    public class MyPluginCellType : CellType
    {
        [ListProperty]
        public List<MyObj> MyProperty { get; set; }
    }

    public class MyObj : ObjectPropertyBase
    {
        public string Name { get; set; }
        public string Description { get; set; }
    }

修改 Designer\MyPluginCellTypeDesigner.cs 文件

csharp
    public class MyPluginCellTypeDesigner : CellTypeDesigner<MyPluginCellType>, IDefaultEditAction
    {
        public void OnStartEditStarting(IBuilderContext builderContext, StartEditingEventArgs args)
        {
            args.DefaultActionPropertyName = nameof(MyPluginCellType.MyProperty);
            args.CancelEdit = true;
        }
    }

代码说明

  1. MyPluginCellType 单元格声明了 MyProperty 列表属性
  2. MyPluginCellTypeDesigner 实现了 IDefaultEditAction 接口,在OnStartEditStarting 方法中 取消了默认编辑行为并制定了新的默认行为属性为 MyProperty

效果:

  1. 在设计器中添加 MyPluginCellType 单元格
  2. 双击单元格,单元格没有像之前一样进入编辑状态,而是弹出了编辑 MyProperty 属性的对话框

注意

DefaultActionPropertyName 属性对应的编辑器必须是超链接类型的,例如 列表属性,命令属性,数据源属性等。

更新: 2022-12-02 23:46:05
原文: https://www.yuque.com/robert-bh51n/ea8l6c/bt07fnbp17s76y0c