| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | using System.Windows;namespace OpenSEMI.ClientBase.Command{    public interface ICommandTrigger    {        void Initialize(FrameworkElement source);    }    public static class CommandSource    {               public static ICommandTrigger GetTrigger(FrameworkElement source)        {            return (ICommandTrigger)source.GetValue(TriggerProperty);        }        public static void SetTrigger(FrameworkElement source, ICommandTrigger value)        {            source.SetValue(TriggerProperty, value);        }        // Using a DependencyProperty as the backing store for Trigger.  This enables animation, styling, binding, etc...        public static readonly DependencyProperty TriggerProperty =            DependencyProperty.RegisterAttached(                "Trigger1",                typeof(ICommandTrigger),                typeof(CommandSource),                new UIPropertyMetadata(                    null,                    TriggerPropertyChanged));        private static void TriggerPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)        {            FrameworkElement element = d as FrameworkElement;            ICommandTrigger commandTrigger = e.NewValue as ICommandTrigger;            if (commandTrigger != null)            {                commandTrigger.Initialize(element);            }        }    }}
 |