/// <summary> /// 执行生成命令的核心逻辑。 /// </summary> /// <param name="context"></param> private static void DoGenerate(CommandAutoUIContext context) { //使用分组算法进行分组,并为每个组创建对应的控件生成器 //注意:如果是单独的Command,一样生成一个单独的“组” var grouping = new GroupOperation { Context = context }; var groups = grouping.GroupCommands(); //对于每一个命令组,开始生成控件,并添加到上下文对象中。 foreach (var group in groups) { var generator = group.Generator; generator.CreateControlToContext(); } //根据分组生成的控件,也都加入到容器中。 context.AttachGroupedItems(); }
/// <summary> /// 为指定的Toolbar生成子项。 /// </summary> /// <param name="commandsContainer">需要生成Commands的toolbar</param> /// <param name="boType">toolbar是为这个类型提供服务</param> /// <param name="commandArg"></param> /// <param name="commands">在这个command集合中筛选</param> public void Generate(ItemsControl commandsContainer, object commandArg, IEnumerable<WPFCommand> commands) { if (commandsContainer == null) throw new ArgumentNullException("toolbar"); if (commands == null) throw new ArgumentNullException("commands"); //生成一个上下文对象 var context = new CommandAutoUIContext(commandsContainer, commandArg, commands); ////过滤不可用的命令 //var filteredCommands = this.FilterExsitingCommands(commandsContainer, commands); DoGenerate(context); ResetContainerVisibility(commandsContainer); SealViewCommands(commandArg); }
/// <summary> /// 为指定的Toolbar生成子项。 /// </summary> /// <param name="commandsContainer">需要生成Commands的toolbar</param> /// <param name="boType">toolbar是为这个类型提供服务</param> /// <param name="commandArg"></param> /// <param name="commands">在这个command集合中筛选</param> public void Generate(ItemsControl commandsContainer, object commandArg, IEnumerable <WPFCommand> commands) { if (commandsContainer == null) { throw new ArgumentNullException("toolbar"); } if (commands == null) { throw new ArgumentNullException("commands"); } //生成一个上下文对象 var context = new CommandAutoUIContext(commandsContainer, commandArg, commands); ////过滤不可用的命令 //var filteredCommands = this.FilterExsitingCommands(commandsContainer, commands); DoGenerate(context); ResetContainerVisibility(commandsContainer); SealViewCommands(commandArg); }