예제 #1
0
 public static System.Windows.Interactivity.TriggerCollection GetTriggers(DependencyObject obj)
 {
     System.Windows.Interactivity.TriggerCollection value = (System.Windows.Interactivity.TriggerCollection)obj.GetValue(Interaction.TriggersProperty);
     if (value == null)
     {
         value = new System.Windows.Interactivity.TriggerCollection();
         obj.SetValue(Interaction.TriggersProperty, value);
     }
     return(value);
 }
예제 #2
0
 private static void OnTriggersChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
 {
     System.Windows.Interactivity.TriggerCollection oldValue = args.OldValue as System.Windows.Interactivity.TriggerCollection;
     System.Windows.Interactivity.TriggerCollection newValue = args.NewValue as System.Windows.Interactivity.TriggerCollection;
     if (oldValue != newValue)
     {
         if (oldValue != null && ((IAttachedObject)oldValue).AssociatedObject != null)
         {
             oldValue.Detach();
         }
         if (newValue != null && obj != null)
         {
             if (((IAttachedObject)newValue).AssociatedObject != null)
             {
                 throw new InvalidOperationException(ExceptionStringTable.CannotHostTriggerCollectionMultipleTimesExceptionMessage);
             }
             newValue.Attach(obj);
         }
     }
 }
예제 #3
0
        private static void OnTriggersChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            StyleTriggerCollection styleTriggers = e.NewValue as StyleTriggerCollection;

            if (styleTriggers != null)
            {
                System.Windows.Interactivity.TriggerCollection triggers =
                    System.Windows.Interactivity.Interaction.GetTriggers(d);

                foreach (System.Windows.Interactivity.TriggerBase trigger in styleTriggers)
                {
                    System.Windows.Interactivity.TriggerBase triggerClone =
                        (System.Windows.Interactivity.TriggerBase)trigger.Clone();

                    foreach (System.Windows.Interactivity.TriggerAction action in trigger.Actions)
                    {
                        triggerClone.Actions.Add((System.Windows.Interactivity.TriggerAction)action.Clone());
                    }

                    triggers.Add(triggerClone);
                }
            }
        }