1 /// <summary> 2 /// 表示命令注冊管理器。 3 /// </summary> 4 public static class CommandBindingManager 5 { 6 private static readonly List<CommandTarget> targets = new List<CommandTarget>(); 7 8 /// <summary> 9 /// 注冊命令道指定的命令控件。 10 /// </summary> 11 /// <param name="control">綁定目標。</param> 12 /// <param name="commandBinding">命令綁定源。</param> 13 /// <returns>返回一個命令目標實例。</returns> 14 public static CommandTarget Register(Control control, CommandBinding commandBinding) 15 { 16 var target = new CommandTarget(control, commandBinding); 17 targets.Add(target); 18 return target; 19 } 20 21 /// <summary> 22 /// 注冊命令道指定的命令控件。 23 /// </summary> 24 /// <param name="stripItem">綁定目標。</param> 25 /// <param name="commandBinding">命令綁定源。</param> 26 /// <returns>返回一個命令目標實例。</returns> 27 public static CommandTarget Register(ToolStripItem stripItem, CommandBinding commandBinding) 28 { 29 var target = new CommandTarget(stripItem, commandBinding); 30 targets.Add(target); 31 return target; 32 } 33 34 /// <summary> 35 /// 注冊命令道指定的命令控件。 36 /// </summary> 37 /// <param name="control">綁定目標。</param> 38 /// <param name="command">綁定命令。</param> 39 /// <returns>返回一個命令目標實例。</returns> 40 public static CommandTarget Register(Control control, Command command) 41 { 42 return Register(control, new CommandBinding(command)); 43 } 44 /// <summary> 45 /// 注冊命令道指定的命令控件。 46 /// </summary> 47 /// <param name="stripItem">綁定目標。</param> 48 /// <param name="command">綁定命令。</param> 49 /// <returns>返回一個命令目標實例。</returns> 50 public static CommandTarget Register(ToolStripItem stripItem, Command command) 51 { 52 return Register(stripItem, new CommandBinding(command)); 53 } 54 55 /// <summary> 56 /// 注冊命令道指定的命令控件。 57 /// </summary> 58 /// <param name="control">綁定目標。</param> 59 /// <param name="command">綁定命令。</param> 60 /// <param name="source">構造命令參數的源。</param> 61 /// <param name="propertyName">構造命令參數的名稱。</param> 62 /// <param name="booleanOppose">若值為System.Boolean值時,是否取反向值。</param> 63 /// <returns>返回一個命令目標實例。</returns> 64 public static CommandTarget Register(Control control, Command command, object source, string propertyName, bool booleanOppose = false) 65 { 66 var commandBinding = new CommandBinding(command, source, propertyName, booleanOppose); 67 return Register(control, commandBinding); 68 } 69 70 /// <summary> 71 /// 注冊命令道指定的命令控件。 72 /// </summary> 73 /// <param name="stripItem">綁定目標。</param> 74 /// <param name="command">綁定命令。</param> 75 /// <param name="source">構造命令參數的源。</param> 76 /// <param name="propertyName">構造命令參數的名稱。</param> 77 /// <param name="booleanOppose">若值為System.Boolean值時,是否取反向值。</param> 78 /// <returns>返回一個命令目標實例。</returns> 79 public static CommandTarget Register(ToolStripItem stripItem, Command command, object source, string propertyName, bool booleanOppose = false) 80 { 81 var commandBinding = new CommandBinding(command, source, propertyName, booleanOppose); 82 return Register(stripItem, commandBinding); 83 } 84 85 /// <summary> 86 /// 注冊命令道指定的命令控件。 87 /// </summary> 88 /// <param name="control">綁定目標。</param> 89 /// <param name="command">綁定命令。</param> 90 /// <param name="staticSourceType">靜態類類型。</param> 91 /// <param name="propertyName">構造命令參數的名稱。</param> 92 /// <param name="booleanOppose">若值為System.Boolean值時,是否取反向值。</param> 93 /// <returns>返回一個命令目標實例。</returns> 94 public static CommandTarget Register(Control control, Command command, Type staticSourceType, string propertyName, bool booleanOppose = false) 95 { 96 var commandBinding = new CommandBinding(command, staticSourceType, propertyName, booleanOppose); 97 return Register(control, commandBinding); 98 } 99 /// <summary>100 /// 注冊命令道指定的命令控件。101 /// </summary>102 /// <param name="stripItem">綁定目標。</param>103 /// <param name="command">綁定命令。</param>104 /// <param name="staticSourceType">靜態類類型。</param>105 /// <param name="propertyName">構造命令參數的名稱。</param>106 /// <param name="booleanOppose">若值為System.Boolean值時,是否取反向值。</param>107 /// <returns>返回一個命令目標實例。</returns>108 public static CommandTarget Register(ToolStripItem stripItem, Command command, Type staticSourceType, string propertyName, bool booleanOppose = false)109 {110 var commandBinding = new CommandBinding(command, staticSourceType, propertyName, booleanOppose);111 return Register(stripItem, commandBinding);112 }113 114 /// <summary>115 /// 反注冊命令。116 /// </summary>117 /// <param name="target">注銷的命令目標。</param>118 public static void Unregister(CommandTarget target)119 {120 if (target == null)121 {122 return;123 }124 if (targets.Contains(target))125 {126 targets.Remove(target);127 target.Dispose();128 }129 }130 }