12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- using System;
- using System.Windows;
- namespace HandyControl.Interactivity;
- public static class Interaction
- {
- private static readonly DependencyProperty TriggersProperty =
- DependencyProperty.RegisterAttached("ShadowTriggers", typeof(TriggerCollection), typeof(Interaction),
- new FrameworkPropertyMetadata(OnTriggersChanged));
- private static readonly DependencyProperty BehaviorsProperty =
- DependencyProperty.RegisterAttached("ShadowBehaviors", typeof(BehaviorCollection), typeof(Interaction),
- new FrameworkPropertyMetadata(OnBehaviorsChanged));
- internal static bool ShouldRunInDesignMode { get; set; }
- public static TriggerCollection GetTriggers(DependencyObject obj)
- {
- var triggerCollection = (TriggerCollection) obj.GetValue(TriggersProperty);
- if (triggerCollection == null)
- {
- triggerCollection = new TriggerCollection();
- obj.SetValue(TriggersProperty, triggerCollection);
- }
- return triggerCollection;
- }
- public static BehaviorCollection GetBehaviors(DependencyObject obj)
- {
- var behaviorCollection = (BehaviorCollection) obj.GetValue(BehaviorsProperty);
- if (behaviorCollection == null)
- {
- behaviorCollection = new BehaviorCollection();
- obj.SetValue(BehaviorsProperty, behaviorCollection);
- }
- return behaviorCollection;
- }
- private static void OnBehaviorsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
- {
- var oldValue = (BehaviorCollection) args.OldValue;
- var newValue = (BehaviorCollection) args.NewValue;
- if (Equals(oldValue, newValue))
- return;
- if (oldValue?.AssociatedObject != null)
- oldValue.Detach();
- if (newValue == null || obj == null)
- return;
- if (newValue.AssociatedObject != null)
- throw new InvalidOperationException(ExceptionStringTable
- .CannotHostBehaviorCollectionMultipleTimesExceptionMessage);
- newValue.Attach(obj);
- }
- private static void OnTriggersChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
- {
- var oldValue = args.OldValue as TriggerCollection;
- var newValue = args.NewValue as TriggerCollection;
- if (Equals(oldValue, newValue))
- return;
- if (oldValue?.AssociatedObject != null)
- oldValue.Detach();
- if (newValue == null || obj == null)
- return;
- if (newValue.AssociatedObject != null)
- throw new InvalidOperationException(ExceptionStringTable
- .CannotHostTriggerCollectionMultipleTimesExceptionMessage);
- newValue.Attach(obj);
- }
- internal static bool IsElementLoaded(FrameworkElement element)
- {
- return element.IsLoaded;
- }
- }
|