[]
        
(Showing Draft Content)

重新定义单元格双击行为

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

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

示例代码

修改 MyPluginCellType.cs 文件:

[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 文件:

 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 属性对应的编辑器必须是超链接类型的,例如列表属性、命令属性、数据源属性等。