Appearance
重新定义单元格双击行为
默认情况下,双击一个单元格,使单元格进入编辑状态,来编辑单元格的值,但是,有些单元格类型并不支持与单元格的值绑定(例如菜单,图文列表等),此时,双击进入编辑状态的行为就比较奇怪。
单元格插件可以通过实现 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;
}
}代码说明
- MyPluginCellType 单元格声明了 MyProperty 列表属性
- MyPluginCellTypeDesigner 实现了 IDefaultEditAction 接口,在OnStartEditStarting 方法中 取消了默认编辑行为并制定了新的默认行为属性为 MyProperty
效果:
- 在设计器中添加 MyPluginCellType 单元格
- 双击单元格,单元格没有像之前一样进入编辑状态,而是弹出了编辑 MyProperty 属性的对话框
注意
DefaultActionPropertyName 属性对应的编辑器必须是超链接类型的,例如 列表属性,命令属性,数据源属性等。
更新: 2022-12-02 23:46:05
原文: https://www.yuque.com/robert-bh51n/ea8l6c/bt07fnbp17s76y0c