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 } }