Page tree
Skip to end of metadata
Go to start of metadata

如果一个属性的类型是List类型,List的每一项又包含了子属性,那么可以通过标注ListPropertyAttribute,使得活字格设计器可以通过弹出二级对话框来编辑该属性。

注意,ObjType属性里声明的类型必须与属性类型一致。

自定义对象的类型应该从 ObjectPropertyBase 类派生,以确保在单元格复制的时候,子属性可以被正确的深克隆(ObjectPropertyBase实现了默认的深克隆逻辑)。

    public class MyPluginCellType : CellType
    {
        [ObjectProperty(ObjType=typeof(MyObj))]
        public MyObj MyProperty { get; set; }
    }

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


在设计器中效果如下:

列表项目的子属性也可以通过标注来控制属性编辑控件。

下面例子中,额外声明了两个属性分别使用公式编辑器和命令编辑器。具体标注的用法请参考之前的章节。


     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; }

        [FormulaProperty]
        public object FormulaProperty { get; set; }

        [CustomCommandObject]
        [DisplayName("点击命令")]
        public object ClickCommand { get; set; }
    }


在设计器中效果如下:

如果需要更细致的控制,可以通过ListPropertyAttribute的其他属性来控制。

  1. 控制列表最大或最小元素个数
    1. 设置ListPropertyAttribute 的 MaxCount 和 MinCount 属性。
    2. 代码:

          public class MyPluginCellType : CellType
          {
              [ListProperty(MaxCount = 5, MinCount = 1)]
              public List<MyObj> MyProperty { get; set; }
          }
      
          public class MyObj: ObjectPropertyBase
          {
              public string Name { get; set; }
              public string Description { get; set; }
          }


  • No labels