Ejemplo n.º 1
0
 private static void InvokeEventHandlers(UIElement source, RoutedEventArgs args)
 {
   args.Source = source;
   foreach (var handler in GlobalEventManager.GetTypedClassEventHandlers(source.GetType(), args.RoutedEvent))
   {
     handler.InvokeHandler(source, args);
   }
   List<RoutedEventHandlerInfo> handlers;
   if (source._eventHandlerDictionary.TryGetValue(args.RoutedEvent, out handlers))
   {
     foreach (var handler in handlers)
     {
       handler.InvokeHandler(source, args);
     }
   }
 }
Ejemplo n.º 2
0
    private static void RaiseEventImpl(UIElement sender, RoutedEventArgs args)
    {
      args.Source = sender;
      Visual visual;
      switch (args.RoutedEvent.RoutingStrategy)
      {
        case RoutingStrategy.Direct:
          InvokeEventHandlers(sender, args);
          break;

        case RoutingStrategy.Bubble:
          visual = sender;
          while (visual != null)
          {
            var uiElement = visual as UIElement;
            if (uiElement != null) 
              InvokeEventHandlers(uiElement, args);
            visual = visual.VisualParent;
          }
          break;

        case RoutingStrategy.Tunnel:
          var stack = new List<UIElement>();
          visual = sender;
          while (visual != null)
          {
            var uiElement = visual as UIElement;
            if (uiElement != null)
              stack.Add(uiElement);
            visual = visual.VisualParent;
          }
          for (int n = stack.Count - 1; n >= 0; --n)
          {
            InvokeEventHandlers(stack[n], args);
          }
          break;
      }
    }
Ejemplo n.º 3
0
 public void RaiseEvent(RoutedEventArgs args)
 {
   if (args == null) throw new ArgumentNullException("args");
   RaiseEventImpl(this, args);
 }
Ejemplo n.º 4
0
    protected static void ReRaiseEventAs(UIElement sender, RoutedEventArgs args, RoutedEvent newEvent)
    {
      if(sender == null)
        return;
      if (args == null) throw new ArgumentNullException("args");
      if (newEvent == null) throw new ArgumentNullException("newEvent");

      var oldEvent = args.RoutedEvent;
      try
      {
        args.RoutedEvent = newEvent;
        RaiseEventImpl(sender, args);
      }
      finally
      {
        args.RoutedEvent = oldEvent;
      }
    }
Ejemplo n.º 5
0
    internal void InvokeHandler(object target, RoutedEventArgs routedEventArgs)
    {
      if (routedEventArgs.Handled && !HandledEventsToo)
        return;

      if (CommandStencilHandler != null)
      {
        CommandStencilHandler.Execute(new Object[] { target, routedEventArgs });
      }
      else
      {
        var handler = Handler as RoutedEventHandler;
        if (handler != null)
        {
          handler(target, routedEventArgs);
        }
        else
        {
          Handler.DynamicInvoke(target, routedEventArgs);
        }
      }
    }