private static CommandWrapper GetCommandWrapperInstance(IDictionary <ICommand, CommandWrapper> commandWrappers, ICommand command) { lock (commandWrappers) { if (commandWrappers.ContainsKey(command)) { return(commandWrappers[command]); } else { CommandWrapper Wrapper = new CommandWrapper(command); commandWrappers.Add(command, Wrapper); return(Wrapper); } } }
/// <summary> /// Converts a value. /// </summary> /// <returns> /// A converted value. If the method returns null, the valid null value is used. /// </returns> /// <param name="value">The value produced by the binding source.</param><param name="targetType">The type of the binding target property.</param><param name="parameter">The converter parameter to use.</param><param name="culture">The culture to use in the converter.</param> public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { object Command = value; if (Command == null) { return(null); } else if (Command is ICommand) { return(CommandWrapper.GetCommandWrapperInstance((ICommand)Command)); } else { throw new InvalidOperationException("Collection to wrap is either not enumerable or does not support INotifyCollectionChanged"); } }