12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- using System.Windows;
- using System.Windows.Controls;
- using HandyControl.Interactivity;
- namespace HandyControl.Controls;
- public class PanelElement
- {
- public static readonly DependencyProperty FluidMoveBehaviorProperty = DependencyProperty.RegisterAttached(
- "FluidMoveBehavior", typeof(FluidMoveBehavior), typeof(PanelElement), new PropertyMetadata(default(FluidMoveBehavior), OnFluidMoveBehaviorChanged));
- private static void OnFluidMoveBehaviorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- if (d is Panel panel)
- {
- var collection = Interaction.GetBehaviors(panel);
- var oldBehavior = GetTempFluidMoveBehavior(panel);
- collection.ItemRemoved(oldBehavior);
- panel.SetCurrentValue(TempFluidMoveBehaviorProperty, DependencyProperty.UnsetValue);
- if (e.NewValue is FluidMoveBehavior behavior)
- {
- collection.ItemAdded(behavior);
- SetTempFluidMoveBehavior(panel, behavior);
- }
- }
- }
- public static void SetFluidMoveBehavior(DependencyObject element, FluidMoveBehavior value)
- => element.SetValue(FluidMoveBehaviorProperty, value);
- public static FluidMoveBehavior GetFluidMoveBehavior(DependencyObject element)
- => (FluidMoveBehavior) element.GetValue(FluidMoveBehaviorProperty);
- private static readonly DependencyProperty TempFluidMoveBehaviorProperty = DependencyProperty.RegisterAttached(
- "TempFluidMoveBehavior", typeof(FluidMoveBehavior), typeof(PanelElement), new PropertyMetadata(default(FluidMoveBehavior)));
- private static void SetTempFluidMoveBehavior(DependencyObject element, FluidMoveBehavior value)
- => element.SetValue(TempFluidMoveBehaviorProperty, value);
- private static FluidMoveBehavior GetTempFluidMoveBehavior(DependencyObject element)
- => (FluidMoveBehavior) element.GetValue(TempFluidMoveBehaviorProperty);
- }
|