using System.Collections.Generic;
using System.Windows;
using TriggerBase = Microsoft.Xaml.Behaviors.TriggerBase;
using Microsoft.Xaml.Behaviors;
namespace DTS.Common.Behaviors
{
public class InteractivityTemplate : DataTemplate
{
}
///
/// Holder for interactivity entries
///
public class InteractivityItems : FrameworkElement
{
private List _behaviors;
private List _triggers;
///
/// Storage for triggers
///
public new List Triggers => _triggers ?? (_triggers = new List());
///
/// Storage for Behaviors
///
public List Behaviors => _behaviors ?? (_behaviors = new List());
#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
}
}