Files
DP44/Common/DTS.CommonCore/Behaviors/InteractivityTemplate.cs
2026-04-17 14:55:32 -04:00

62 lines
2.1 KiB
C#

using System.Collections.Generic;
using System.Windows;
using System.Windows.Interactivity;
using TriggerBase = System.Windows.Interactivity.TriggerBase;
namespace DTS.Common.Behaviors
{
public class InteractivityTemplate : DataTemplate
{
}
/// <summary>
/// Holder for interactivity entries
/// </summary>
public class InteractivityItems : FrameworkElement
{
private List<Behavior> _behaviors;
private List<TriggerBase> _triggers;
/// <summary>
/// Storage for triggers
/// </summary>
public new List<TriggerBase> Triggers => _triggers ?? (_triggers = new List<TriggerBase>());
/// <summary>
/// Storage for Behaviors
/// </summary>
public List<Behavior> Behaviors => _behaviors ?? (_behaviors = new List<Behavior>());
#region Template attached property
public static InteractivityTemplate GetTemplate(DependencyObject obj)
{
return (InteractivityTemplate)obj.GetValue(TemplateProperty);
}
public static void SetTemplate(DependencyObject obj, InteractivityTemplate value)
{
obj.SetValue(TemplateProperty, value);
}
public static readonly DependencyProperty TemplateProperty = DependencyProperty.RegisterAttached("Template", typeof(InteractivityTemplate), typeof(InteractivityItems), new PropertyMetadata(default(InteractivityTemplate), OnTemplateChanged));
private static void OnTemplateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (e.NewValue == null) return;
var interactivityTemplate = (InteractivityTemplate)e.NewValue;
var interactivityItems = (InteractivityItems)interactivityTemplate.LoadContent();
var bc = Interaction.GetBehaviors(d);
var tc = Interaction.GetTriggers(d);
foreach (var behavior in interactivityItems.Behaviors)
bc.Add(behavior);
foreach (var trigger in interactivityItems.Triggers)
tc.Add(trigger);
}
#endregion
}
}