[]
如果一个单元格不是ICommandCellType,但是该单元格内部属性中有命令设置,如菜单单元格类型,需实现该接口; 否则有些命令执行会出错,而且查找所有引用会有遗漏。
public interface IReferenceCommand
public class MyMenuCellType : CellType, IReferenceCommand
{
public List<ItemInfo> Items { get; set; }
public IEnumerable<LocatedObject<List<Command>>> GetCommandList(LocationIndicator location)
{
return this.GetCommandList(this.Items, location);
}
private IEnumerable<LocatedObject<List<Command>>> GetCommandList(List<ItemInfo> items, LocationIndicator location)
{
if (items == null)
{
yield break;
}
foreach (var item in items)
{
if (item.CommandList != null)
{
var newLocation = location.AppendProperty("MyMenuCellType").AppendProperty(item.Text).AppendProperty("CommandList");
yield return new LocatedObject<List<Command>>(item.CommandList, newLocation);
}
foreach (var item2 in GetCommandList(item.SubItems, location))
{
yield return item2;
}
}
}
}
public class ItemInfo
{
public string Text { get; set; }
public List<Command> CommandList { get; set; }
public List<ItemInfo> SubItems { get; set; }
//...
}
返回插件内部属性使用到的所有的命令列表。
IEnumerable<LocatedObject<List<Command>>> GetCommandList(LocationIndicator location)
类型 | 名称 | 描述 |
---|---|---|
LocationIndicator | location | 坐标定位器。 |
类型 | 描述 |
---|---|
System.Collections.Generic.IEnumerable<T><LocatedObject<System.Collections.Generic.List<T><Command>>> | 返回插件内部属性使用到的所有的命令列表。 |