/// <summary> /// Gets the value of the Triggers attached property /// </summary> public static TriggerCollection GetTriggers(DependencyObject d) { if (d == null) { throw new ArgumentNullException("d"); } TriggerCollection triggers = (TriggerCollection)d.GetValue(TriggersProperty); if (triggers == null) { triggers = new TriggerCollection(); d.SetValue(TriggersProperty, triggers); } return(triggers); }
private static void OnTriggersChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { TriggerCollection oldTriggers = (TriggerCollection)e.OldValue; if (oldTriggers != null && ((IAttachedObject)oldTriggers).AssociatedObject == d) { oldTriggers.Detach(); } TriggerCollection newTriggers = (TriggerCollection)e.NewValue; if (newTriggers != null) { if (((IAttachedObject)newTriggers).AssociatedObject != null) { // assigned from a template, collection must be cloned d.SetValue(TriggersProperty, newTriggers.Clone()); } else { newTriggers.Attach(d); } } }