44 lines
2.1 KiB
C#
44 lines
2.1 KiB
C#
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);
|
|
}
|
|
} |