| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | using System.Windows;using System.Windows.Input;namespace OpenSEMI.ClientBase.Command{    public abstract class CommandTrigger : Freezable, ICommandTrigger    {        public bool IsInitialized { get; set; }        #region Dependency Properties        #region Command Property        /// <value>Identifies the Command dependency property</value>        public static readonly DependencyProperty CommandProperty =            DependencyProperty.Register("Command", typeof(ICommand), typeof(CommandTrigger),            new FrameworkPropertyMetadata(null));        /// <value>description for Command property</value>        public ICommand Command        {            get { return (ICommand)GetValue(CommandProperty); }            set { SetValue(CommandProperty, value); }        }        #endregion        #region CustomParameter Property        /// <value>Identifies the CustomParameterProperty dependency property</value>        public static readonly DependencyProperty CustomParameterProperty =            DependencyProperty.Register("CustomParameter", typeof(object), typeof(CommandTrigger),            new FrameworkPropertyMetadata(null));        /// <value>description for CustomParameter property</value>        public object CustomParameter        {            get { return (object)GetValue(CustomParameterProperty); }            set { SetValue(CustomParameterProperty, value); }        }        #endregion        #region CommandTarget Property        /// <value>Identifies the CommandTarget dependency property</value>        public static readonly DependencyProperty CommandTargetProperty =            DependencyProperty.Register("CommandTarget", typeof(IInputElement), typeof(CommandTrigger),            new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.Inherits));        /// <value>description for CommandTarget property</value>        public IInputElement CommandTarget        {            get { return (IInputElement)GetValue(CommandTargetProperty); }            set { SetValue(CommandTargetProperty, value); }        }        #endregion        #endregion        #region Internals        void ICommandTrigger.Initialize(FrameworkElement source)        {            if (IsInitialized)                return;            InitializeCore(source);            IsInitialized = true;        }        protected abstract void InitializeCore(FrameworkElement source);        protected void ExecuteCommand(CommandParameter<object> parameter)        {            if (Command == null)                return;            RoutedCommand routedCommand = Command as RoutedCommand;            if (routedCommand != null)            {                routedCommand.Execute(parameter, CommandTarget);            }            else            {                Command.Execute(parameter);            }        }        #endregion    }}
 |