62 lines
2.1 KiB
C#
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
|
|
}
|
|
}
|