/// <summary> /// Returns the trigger collection for a particular control. /// </summary> public static TriggerCollection GetTriggers(Control control) { TriggerCollection collection; if (!instance.triggerLookup.TryGetValue(control, out collection)) { collection = new TriggerCollection(control); instance.triggerLookup[control] = collection; control.Unloaded += OnControlUnloaded; } return(collection); }
/// <summary> /// Called when the control property changes. Make sure we set the control property /// for all the triggers. /// </summary> private static void OnControlChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { TriggerCollection collection = d as TriggerCollection; Control newControl = e.NewValue as Control; if (collection != null && newControl != null) { List <Trigger> triggers = collection.Triggers; if (triggers != null) { foreach (var trigger in triggers) { trigger.SetValue(Trigger.ControlProperty, newControl); } } } }