init
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
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
|
||||
{
|
||||
|
||||
}
|
||||
/// <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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user