Statistics
| Branch: | Revision:

root / trunk / NotifyIconWpf / RoutedEventHelper.cs @ 9bae55d1

History | View | Annotate | Download (2.5 kB)

1
using System;
2
using System.Windows;
3

    
4
namespace Hardcodet.Wpf.TaskbarNotification
5
{
6
  /// <summary>
7
  /// Helper class used by routed events of the
8
  /// <see cref="TaskbarIcon"/> class.
9
  /// </summary>
10
  internal static class RoutedEventHelper
11
  {
12
    #region RoutedEvent Helper Methods
13

    
14
    /// <summary>
15
    /// A static helper method to raise a routed event on a target UIElement or ContentElement.
16
    /// </summary>
17
    /// <param name="target">UIElement or ContentElement on which to raise the event</param>
18
    /// <param name="args">RoutedEventArgs to use when raising the event</param>
19
    internal static void RaiseEvent(DependencyObject target, RoutedEventArgs args)
20
    {
21
      if (target is UIElement)
22
      {
23
        (target as UIElement).RaiseEvent(args);
24
      }
25
      else if (target is ContentElement)
26
      {
27
        (target as ContentElement).RaiseEvent(args);
28
      }
29
    }
30

    
31
    /// <summary>
32
    /// A static helper method that adds a handler for a routed event 
33
    /// to a target UIElement or ContentElement.
34
    /// </summary>
35
    /// <param name="element">UIElement or ContentElement that listens to the event</param>
36
    /// <param name="routedEvent">Event that will be handled</param>
37
    /// <param name="handler">Event handler to be added</param>
38
    internal static void AddHandler(DependencyObject element, RoutedEvent routedEvent, Delegate handler)
39
    {
40
      UIElement uie = element as UIElement;
41
      if (uie != null)
42
      {
43
        uie.AddHandler(routedEvent, handler);
44
      }
45
      else
46
      {
47
        ContentElement ce = element as ContentElement;
48
        if (ce != null)
49
        {
50
          ce.AddHandler(routedEvent, handler);
51
        }
52
      }
53
    }
54

    
55
    /// <summary>
56
    /// A static helper method that removes a handler for a routed event 
57
    /// from a target UIElement or ContentElement.
58
    /// </summary>
59
    /// <param name="element">UIElement or ContentElement that listens to the event</param>
60
    /// <param name="routedEvent">Event that will no longer be handled</param>
61
    /// <param name="handler">Event handler to be removed</param>
62
    internal static void RemoveHandler(DependencyObject element, RoutedEvent routedEvent, Delegate handler)
63
    {
64
      UIElement uie = element as UIElement;
65
      if (uie != null)
66
      {
67
        uie.RemoveHandler(routedEvent, handler);
68
      }
69
      else
70
      {
71
        ContentElement ce = element as ContentElement;
72
        if (ce != null)
73
        {
74
          ce.RemoveHandler(routedEvent, handler);
75
        }
76
      }
77
    }
78

    
79
    #endregion
80
  }
81
}