Statistics
| Branch: | Revision:

root / trunk / NotifyIconWpf / RoutedEventHelper.cs @ 7fcbf914

History | View | Annotate | Download (2.9 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
}