예제 #1
0
        private static void OnTemplateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            DependencyObject target = d;

            if (e.OldValue != null)
            {
                InteractivityTemplate interactivityTemplate = (InteractivityTemplate)e.OldValue;
                InteractivityItems    interactivityItems    = (InteractivityItems)interactivityTemplate.LoadContent();
                BehaviorCollection    behaviorCollection    = Interaction.GetBehaviors(target);
                TriggerCollection     triggerCollection     = Interaction.GetTriggers(target);

                interactivityItems.Behaviors.ForEach(x => behaviorCollection.Remove(x));
                interactivityItems.Triggers.ForEach(x => triggerCollection.Remove(x));
            }

            if (e.NewValue != null)
            {
                InteractivityTemplate interactivityTemplate = (InteractivityTemplate)e.NewValue;
                interactivityTemplate.Seal();
                InteractivityItems interactivityItems = (InteractivityItems)interactivityTemplate.LoadContent();
                BehaviorCollection behaviorCollection = Interaction.GetBehaviors(target);
                TriggerCollection  triggerCollection  = Interaction.GetTriggers(target);

                interactivityItems.Behaviors.ForEach(behaviorCollection.Add);
                interactivityItems.Triggers.ForEach(triggerCollection.Add);
            }
        }
예제 #2
0
 /// <summary>
 /// This is used to refresh the binding when our parent's binding changes
 /// For some reason in WinRT, when the parent's binding is changed due to
 /// inheritance, our binding does not get refreshed.  This code is an attempt
 /// to work around that issue.
 /// </summary>
 /// <param name="dpo"></param>
 /// <param name="e"></param>
 private static void DataContextChanged(DependencyObject dpo, DependencyPropertyChangedEventArgs e)
 {
     foreach (var pt in Interaction.GetTriggers(dpo))
     {
         pt.SetupBinding();
     }
     foreach (var pb in Interaction.GetBehaviors(dpo))
     {
         pb.SetupBinding();
     }
 }
예제 #3
0
        protected override void OnAttached()
        {
            var triggers = Interaction_
                           .GetTriggers(AssociatedObject)
                           .OfType <EventTrigger>();
            var actions = triggers
                          .First(t => t.EventName == "Closing")
                          .Actions
                          .OfType <InvokeCommandAction>();

            _commandAction            = actions.First();
            AssociatedObject.Closing += _windowClosingHandler;
        }
예제 #4
0
        private static void OnTemplateChanged(
            DependencyObject d,
            DependencyPropertyChangedEventArgs e)
        {
            InteractivityTemplate dt = (InteractivityTemplate)e.NewValue;

#if (!SILVERLIGHT)
            dt.Seal();
#endif
            InteractivityItems ih = (InteractivityItems)dt.LoadContent();
            BehaviorCollection bc = Interaction.GetBehaviors(d);
            TriggerCollection  tc = Interaction.GetTriggers(d);

            foreach (Behavior behavior in ih.Behaviors)
            {
                bc.Add(behavior);
            }

            foreach (TriggerBase trigger in ih.Triggers)
            {
                tc.Add(trigger);
            }
        }