chore: separated System.Windows.Interactivity code
This commit is contained in:
1 parent
0da2875641
commit
ef4226ddf9
26 files changed
+54
-20
No files matched your search
@@ -0,0 +1,76 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user