CommandSource.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System.Windows;
  2. namespace OpenSEMI.ClientBase.Command
  3. {
  4. public interface ICommandTrigger
  5. {
  6. void Initialize(FrameworkElement source);
  7. }
  8. public static class CommandSource
  9. {
  10. public static ICommandTrigger GetTrigger(FrameworkElement source)
  11. {
  12. return (ICommandTrigger)source.GetValue(TriggerProperty);
  13. }
  14. public static void SetTrigger(FrameworkElement source, ICommandTrigger value)
  15. {
  16. source.SetValue(TriggerProperty, value);
  17. }
  18. // Using a DependencyProperty as the backing store for Trigger. This enables animation, styling, binding, etc...
  19. public static readonly DependencyProperty TriggerProperty =
  20. DependencyProperty.RegisterAttached(
  21. "Trigger1",
  22. typeof(ICommandTrigger),
  23. typeof(CommandSource),
  24. new UIPropertyMetadata(
  25. null,
  26. TriggerPropertyChanged));
  27. private static void TriggerPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  28. {
  29. FrameworkElement element = d as FrameworkElement;
  30. ICommandTrigger commandTrigger = e.NewValue as ICommandTrigger;
  31. if (commandTrigger != null)
  32. {
  33. commandTrigger.Initialize(element);
  34. }
  35. }
  36. }
  37. }