Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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);
                }
            }
        }