Statistics
| Branch: | Revision:

root / trunk / Pithos.Client.WPF / SelectiveSynch / VirtualToggleButton.cs @ 6f03d6e1

History | View | Annotate | Download (11.1 kB)

1 255f5f86 Panagiotis Kanavos
#region
2 255f5f86 Panagiotis Kanavos
/* -----------------------------------------------------------------------
3 255f5f86 Panagiotis Kanavos
 * <copyright file="VirtualToggleButton.cs" company="GRNet">
4 255f5f86 Panagiotis Kanavos
 * 
5 255f5f86 Panagiotis Kanavos
 * Copyright 2011-2012 GRNET S.A. All rights reserved.
6 255f5f86 Panagiotis Kanavos
 *
7 255f5f86 Panagiotis Kanavos
 * Redistribution and use in source and binary forms, with or
8 255f5f86 Panagiotis Kanavos
 * without modification, are permitted provided that the following
9 255f5f86 Panagiotis Kanavos
 * conditions are met:
10 255f5f86 Panagiotis Kanavos
 *
11 255f5f86 Panagiotis Kanavos
 *   1. Redistributions of source code must retain the above
12 255f5f86 Panagiotis Kanavos
 *      copyright notice, this list of conditions and the following
13 255f5f86 Panagiotis Kanavos
 *      disclaimer.
14 255f5f86 Panagiotis Kanavos
 *
15 255f5f86 Panagiotis Kanavos
 *   2. Redistributions in binary form must reproduce the above
16 255f5f86 Panagiotis Kanavos
 *      copyright notice, this list of conditions and the following
17 255f5f86 Panagiotis Kanavos
 *      disclaimer in the documentation and/or other materials
18 255f5f86 Panagiotis Kanavos
 *      provided with the distribution.
19 255f5f86 Panagiotis Kanavos
 *
20 255f5f86 Panagiotis Kanavos
 *
21 255f5f86 Panagiotis Kanavos
 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
22 255f5f86 Panagiotis Kanavos
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23 255f5f86 Panagiotis Kanavos
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 255f5f86 Panagiotis Kanavos
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
25 255f5f86 Panagiotis Kanavos
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 255f5f86 Panagiotis Kanavos
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 255f5f86 Panagiotis Kanavos
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
28 255f5f86 Panagiotis Kanavos
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29 255f5f86 Panagiotis Kanavos
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 255f5f86 Panagiotis Kanavos
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 255f5f86 Panagiotis Kanavos
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 255f5f86 Panagiotis Kanavos
 * POSSIBILITY OF SUCH DAMAGE.
33 255f5f86 Panagiotis Kanavos
 *
34 255f5f86 Panagiotis Kanavos
 * The views and conclusions contained in the software and
35 255f5f86 Panagiotis Kanavos
 * documentation are those of the authors and should not be
36 255f5f86 Panagiotis Kanavos
 * interpreted as representing official policies, either expressed
37 255f5f86 Panagiotis Kanavos
 * or implied, of GRNET S.A.
38 255f5f86 Panagiotis Kanavos
 * </copyright>
39 255f5f86 Panagiotis Kanavos
 * -----------------------------------------------------------------------
40 255f5f86 Panagiotis Kanavos
 */
41 255f5f86 Panagiotis Kanavos
#endregion
42 255f5f86 Panagiotis Kanavos
using System;
43 d3a13891 Panagiotis Kanavos
using System.Collections.Generic;
44 d3a13891 Panagiotis Kanavos
using System.Linq;
45 d3a13891 Panagiotis Kanavos
using System.Text;
46 d3a13891 Panagiotis Kanavos
using System.Windows;
47 d3a13891 Panagiotis Kanavos
using System.Windows.Controls.Primitives;
48 d3a13891 Panagiotis Kanavos
using System.Windows.Input;
49 d3a13891 Panagiotis Kanavos
50 d3a13891 Panagiotis Kanavos
namespace Pithos.Client.WPF.SelectiveSynch
51 d3a13891 Panagiotis Kanavos
{
52 d3a13891 Panagiotis Kanavos
    public static class VirtualToggleButton
53 d3a13891 Panagiotis Kanavos
    {
54 d3a13891 Panagiotis Kanavos
        #region attached properties
55 d3a13891 Panagiotis Kanavos
56 d3a13891 Panagiotis Kanavos
        #region IsChecked
57 d3a13891 Panagiotis Kanavos
58 d3a13891 Panagiotis Kanavos
        /// <summary>
59 d3a13891 Panagiotis Kanavos
        /// IsChecked Attached Dependency Property
60 d3a13891 Panagiotis Kanavos
        /// </summary>
61 d3a13891 Panagiotis Kanavos
        public static readonly DependencyProperty IsCheckedProperty =
62 d3a13891 Panagiotis Kanavos
            DependencyProperty.RegisterAttached("IsChecked", typeof(Nullable<bool>), typeof(VirtualToggleButton),
63 d3a13891 Panagiotis Kanavos
                new FrameworkPropertyMetadata((Nullable<bool>)false,
64 d3a13891 Panagiotis Kanavos
                    FrameworkPropertyMetadataOptions.BindsTwoWayByDefault | FrameworkPropertyMetadataOptions.Journal,
65 d3a13891 Panagiotis Kanavos
                    new PropertyChangedCallback(OnIsCheckedChanged)));
66 d3a13891 Panagiotis Kanavos
67 d3a13891 Panagiotis Kanavos
        /// <summary>
68 d3a13891 Panagiotis Kanavos
        /// Gets the IsChecked property.  This dependency property 
69 d3a13891 Panagiotis Kanavos
        /// indicates whether the toggle button is checked.
70 d3a13891 Panagiotis Kanavos
        /// </summary>
71 d3a13891 Panagiotis Kanavos
        public static Nullable<bool> GetIsChecked(DependencyObject d)
72 d3a13891 Panagiotis Kanavos
        {
73 d3a13891 Panagiotis Kanavos
            return (Nullable<bool>)d.GetValue(IsCheckedProperty);
74 d3a13891 Panagiotis Kanavos
        }
75 d3a13891 Panagiotis Kanavos
76 d3a13891 Panagiotis Kanavos
        /// <summary>
77 d3a13891 Panagiotis Kanavos
        /// Sets the IsChecked property.  This dependency property 
78 d3a13891 Panagiotis Kanavos
        /// indicates whether the toggle button is checked.
79 d3a13891 Panagiotis Kanavos
        /// </summary>
80 d3a13891 Panagiotis Kanavos
        public static void SetIsChecked(DependencyObject d, Nullable<bool> value)
81 d3a13891 Panagiotis Kanavos
        {
82 d3a13891 Panagiotis Kanavos
            d.SetValue(IsCheckedProperty, value);
83 d3a13891 Panagiotis Kanavos
        }
84 d3a13891 Panagiotis Kanavos
85 d3a13891 Panagiotis Kanavos
        /// <summary>
86 d3a13891 Panagiotis Kanavos
        /// Handles changes to the IsChecked property.
87 d3a13891 Panagiotis Kanavos
        /// </summary>
88 d3a13891 Panagiotis Kanavos
        private static void OnIsCheckedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
89 d3a13891 Panagiotis Kanavos
        {
90 d3a13891 Panagiotis Kanavos
            UIElement pseudobutton = d as UIElement;
91 d3a13891 Panagiotis Kanavos
            if (pseudobutton != null)
92 d3a13891 Panagiotis Kanavos
            {
93 d3a13891 Panagiotis Kanavos
                Nullable<bool> newValue = (Nullable<bool>)e.NewValue;
94 d3a13891 Panagiotis Kanavos
                if (newValue == true)
95 d3a13891 Panagiotis Kanavos
                {
96 d3a13891 Panagiotis Kanavos
                    RaiseCheckedEvent(pseudobutton);
97 d3a13891 Panagiotis Kanavos
                }
98 d3a13891 Panagiotis Kanavos
                else if (newValue == false)
99 d3a13891 Panagiotis Kanavos
                {
100 d3a13891 Panagiotis Kanavos
                    RaiseUncheckedEvent(pseudobutton);
101 d3a13891 Panagiotis Kanavos
                }
102 d3a13891 Panagiotis Kanavos
                else
103 d3a13891 Panagiotis Kanavos
                {
104 d3a13891 Panagiotis Kanavos
                    RaiseIndeterminateEvent(pseudobutton);
105 d3a13891 Panagiotis Kanavos
                }
106 d3a13891 Panagiotis Kanavos
            }
107 d3a13891 Panagiotis Kanavos
        }
108 d3a13891 Panagiotis Kanavos
109 d3a13891 Panagiotis Kanavos
        #endregion
110 d3a13891 Panagiotis Kanavos
111 d3a13891 Panagiotis Kanavos
        #region IsThreeState
112 d3a13891 Panagiotis Kanavos
113 d3a13891 Panagiotis Kanavos
        /// <summary>
114 d3a13891 Panagiotis Kanavos
        /// IsThreeState Attached Dependency Property
115 d3a13891 Panagiotis Kanavos
        /// </summary>
116 d3a13891 Panagiotis Kanavos
        public static readonly DependencyProperty IsThreeStateProperty =
117 d3a13891 Panagiotis Kanavos
            DependencyProperty.RegisterAttached("IsThreeState", typeof(bool), typeof(VirtualToggleButton),
118 d3a13891 Panagiotis Kanavos
                new FrameworkPropertyMetadata((bool)false));
119 d3a13891 Panagiotis Kanavos
120 d3a13891 Panagiotis Kanavos
        /// <summary>
121 d3a13891 Panagiotis Kanavos
        /// Gets the IsThreeState property.  This dependency property 
122 d3a13891 Panagiotis Kanavos
        /// indicates whether the control supports two or three states.  
123 d3a13891 Panagiotis Kanavos
        /// IsChecked can be set to null as a third state when IsThreeState is true.
124 d3a13891 Panagiotis Kanavos
        /// </summary>
125 d3a13891 Panagiotis Kanavos
        public static bool GetIsThreeState(DependencyObject d)
126 d3a13891 Panagiotis Kanavos
        {
127 d3a13891 Panagiotis Kanavos
            return (bool)d.GetValue(IsThreeStateProperty);
128 d3a13891 Panagiotis Kanavos
        }
129 d3a13891 Panagiotis Kanavos
130 d3a13891 Panagiotis Kanavos
        /// <summary>
131 d3a13891 Panagiotis Kanavos
        /// Sets the IsThreeState property.  This dependency property 
132 d3a13891 Panagiotis Kanavos
        /// indicates whether the control supports two or three states. 
133 d3a13891 Panagiotis Kanavos
        /// IsChecked can be set to null as a third state when IsThreeState is true.
134 d3a13891 Panagiotis Kanavos
        /// </summary>
135 d3a13891 Panagiotis Kanavos
        public static void SetIsThreeState(DependencyObject d, bool value)
136 d3a13891 Panagiotis Kanavos
        {
137 d3a13891 Panagiotis Kanavos
            d.SetValue(IsThreeStateProperty, value);
138 d3a13891 Panagiotis Kanavos
        }
139 d3a13891 Panagiotis Kanavos
140 d3a13891 Panagiotis Kanavos
        #endregion
141 d3a13891 Panagiotis Kanavos
142 d3a13891 Panagiotis Kanavos
        #region IsVirtualToggleButton
143 d3a13891 Panagiotis Kanavos
144 d3a13891 Panagiotis Kanavos
        /// <summary>
145 d3a13891 Panagiotis Kanavos
        /// IsVirtualToggleButton Attached Dependency Property
146 d3a13891 Panagiotis Kanavos
        /// </summary>
147 d3a13891 Panagiotis Kanavos
        public static readonly DependencyProperty IsVirtualToggleButtonProperty =
148 d3a13891 Panagiotis Kanavos
            DependencyProperty.RegisterAttached("IsVirtualToggleButton", typeof(bool), typeof(VirtualToggleButton),
149 d3a13891 Panagiotis Kanavos
                new FrameworkPropertyMetadata((bool)false,
150 d3a13891 Panagiotis Kanavos
                    new PropertyChangedCallback(OnIsVirtualToggleButtonChanged)));
151 d3a13891 Panagiotis Kanavos
152 d3a13891 Panagiotis Kanavos
        /// <summary>
153 d3a13891 Panagiotis Kanavos
        /// Gets the IsVirtualToggleButton property.  This dependency property 
154 d3a13891 Panagiotis Kanavos
        /// indicates whether the object to which the property is attached is treated as a VirtualToggleButton.  
155 d3a13891 Panagiotis Kanavos
        /// If true, the object will respond to keyboard and mouse input the same way a ToggleButton would.
156 d3a13891 Panagiotis Kanavos
        /// </summary>
157 d3a13891 Panagiotis Kanavos
        public static bool GetIsVirtualToggleButton(DependencyObject d)
158 d3a13891 Panagiotis Kanavos
        {
159 d3a13891 Panagiotis Kanavos
            return (bool)d.GetValue(IsVirtualToggleButtonProperty);
160 d3a13891 Panagiotis Kanavos
        }
161 d3a13891 Panagiotis Kanavos
162 d3a13891 Panagiotis Kanavos
        /// <summary>
163 d3a13891 Panagiotis Kanavos
        /// Sets the IsVirtualToggleButton property.  This dependency property 
164 d3a13891 Panagiotis Kanavos
        /// indicates whether the object to which the property is attached is treated as a VirtualToggleButton.  
165 d3a13891 Panagiotis Kanavos
        /// If true, the object will respond to keyboard and mouse input the same way a ToggleButton would.
166 d3a13891 Panagiotis Kanavos
        /// </summary>
167 d3a13891 Panagiotis Kanavos
        public static void SetIsVirtualToggleButton(DependencyObject d, bool value)
168 d3a13891 Panagiotis Kanavos
        {
169 d3a13891 Panagiotis Kanavos
            d.SetValue(IsVirtualToggleButtonProperty, value);
170 d3a13891 Panagiotis Kanavos
        }
171 d3a13891 Panagiotis Kanavos
172 d3a13891 Panagiotis Kanavos
        /// <summary>
173 d3a13891 Panagiotis Kanavos
        /// Handles changes to the IsVirtualToggleButton property.
174 d3a13891 Panagiotis Kanavos
        /// </summary>
175 d3a13891 Panagiotis Kanavos
        private static void OnIsVirtualToggleButtonChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
176 d3a13891 Panagiotis Kanavos
        {
177 d3a13891 Panagiotis Kanavos
            IInputElement element = d as IInputElement;
178 d3a13891 Panagiotis Kanavos
            if (element != null)
179 d3a13891 Panagiotis Kanavos
            {
180 d3a13891 Panagiotis Kanavos
                if ((bool)e.NewValue)
181 d3a13891 Panagiotis Kanavos
                {
182 d3a13891 Panagiotis Kanavos
                    element.MouseLeftButtonDown += OnMouseLeftButtonDown;
183 d3a13891 Panagiotis Kanavos
                    element.KeyDown += OnKeyDown;
184 d3a13891 Panagiotis Kanavos
                }
185 d3a13891 Panagiotis Kanavos
                else
186 d3a13891 Panagiotis Kanavos
                {
187 d3a13891 Panagiotis Kanavos
                    element.MouseLeftButtonDown -= OnMouseLeftButtonDown;
188 d3a13891 Panagiotis Kanavos
                    element.KeyDown -= OnKeyDown;
189 d3a13891 Panagiotis Kanavos
                }
190 d3a13891 Panagiotis Kanavos
            }
191 d3a13891 Panagiotis Kanavos
        }
192 d3a13891 Panagiotis Kanavos
193 d3a13891 Panagiotis Kanavos
        #endregion
194 d3a13891 Panagiotis Kanavos
195 d3a13891 Panagiotis Kanavos
        #endregion
196 d3a13891 Panagiotis Kanavos
197 d3a13891 Panagiotis Kanavos
        #region routed events
198 d3a13891 Panagiotis Kanavos
199 d3a13891 Panagiotis Kanavos
        #region Checked
200 d3a13891 Panagiotis Kanavos
201 d3a13891 Panagiotis Kanavos
        /// <summary>
202 d3a13891 Panagiotis Kanavos
        /// A static helper method to raise the Checked event on a target element.
203 d3a13891 Panagiotis Kanavos
        /// </summary>
204 d3a13891 Panagiotis Kanavos
        /// <param name="target">UIElement or ContentElement on which to raise the event</param>
205 d3a13891 Panagiotis Kanavos
        internal static RoutedEventArgs RaiseCheckedEvent(UIElement target)
206 d3a13891 Panagiotis Kanavos
        {
207 d3a13891 Panagiotis Kanavos
            if (target == null) return null;
208 d3a13891 Panagiotis Kanavos
209 d3a13891 Panagiotis Kanavos
            RoutedEventArgs args = new RoutedEventArgs();
210 d3a13891 Panagiotis Kanavos
            args.RoutedEvent = ToggleButton.CheckedEvent;
211 d3a13891 Panagiotis Kanavos
            RaiseEvent(target, args);
212 d3a13891 Panagiotis Kanavos
            return args;
213 d3a13891 Panagiotis Kanavos
        }
214 d3a13891 Panagiotis Kanavos
215 d3a13891 Panagiotis Kanavos
        #endregion
216 d3a13891 Panagiotis Kanavos
217 d3a13891 Panagiotis Kanavos
        #region Unchecked
218 d3a13891 Panagiotis Kanavos
219 d3a13891 Panagiotis Kanavos
        /// <summary>
220 d3a13891 Panagiotis Kanavos
        /// A static helper method to raise the Unchecked event on a target element.
221 d3a13891 Panagiotis Kanavos
        /// </summary>
222 d3a13891 Panagiotis Kanavos
        /// <param name="target">UIElement or ContentElement on which to raise the event</param>
223 d3a13891 Panagiotis Kanavos
        internal static RoutedEventArgs RaiseUncheckedEvent(UIElement target)
224 d3a13891 Panagiotis Kanavos
        {
225 d3a13891 Panagiotis Kanavos
            if (target == null) return null;
226 d3a13891 Panagiotis Kanavos
227 d3a13891 Panagiotis Kanavos
            RoutedEventArgs args = new RoutedEventArgs();
228 d3a13891 Panagiotis Kanavos
            args.RoutedEvent = ToggleButton.UncheckedEvent;
229 d3a13891 Panagiotis Kanavos
            RaiseEvent(target, args);
230 d3a13891 Panagiotis Kanavos
            return args;
231 d3a13891 Panagiotis Kanavos
        }
232 d3a13891 Panagiotis Kanavos
233 d3a13891 Panagiotis Kanavos
        #endregion
234 d3a13891 Panagiotis Kanavos
235 d3a13891 Panagiotis Kanavos
        #region Indeterminate
236 d3a13891 Panagiotis Kanavos
237 d3a13891 Panagiotis Kanavos
        /// <summary>
238 d3a13891 Panagiotis Kanavos
        /// A static helper method to raise the Indeterminate event on a target element.
239 d3a13891 Panagiotis Kanavos
        /// </summary>
240 d3a13891 Panagiotis Kanavos
        /// <param name="target">UIElement or ContentElement on which to raise the event</param>
241 d3a13891 Panagiotis Kanavos
        internal static RoutedEventArgs RaiseIndeterminateEvent(UIElement target)
242 d3a13891 Panagiotis Kanavos
        {
243 d3a13891 Panagiotis Kanavos
            if (target == null) return null;
244 d3a13891 Panagiotis Kanavos
245 d3a13891 Panagiotis Kanavos
            RoutedEventArgs args = new RoutedEventArgs();
246 d3a13891 Panagiotis Kanavos
            args.RoutedEvent = ToggleButton.IndeterminateEvent;
247 d3a13891 Panagiotis Kanavos
            RaiseEvent(target, args);
248 d3a13891 Panagiotis Kanavos
            return args;
249 d3a13891 Panagiotis Kanavos
        }
250 d3a13891 Panagiotis Kanavos
251 d3a13891 Panagiotis Kanavos
        #endregion
252 d3a13891 Panagiotis Kanavos
253 d3a13891 Panagiotis Kanavos
        #endregion
254 d3a13891 Panagiotis Kanavos
255 d3a13891 Panagiotis Kanavos
        #region private methods
256 d3a13891 Panagiotis Kanavos
257 d3a13891 Panagiotis Kanavos
        private static void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
258 d3a13891 Panagiotis Kanavos
        {
259 d3a13891 Panagiotis Kanavos
            e.Handled = true;
260 d3a13891 Panagiotis Kanavos
            UpdateIsChecked(sender as DependencyObject);
261 d3a13891 Panagiotis Kanavos
        }
262 d3a13891 Panagiotis Kanavos
263 d3a13891 Panagiotis Kanavos
        private static void OnKeyDown(object sender, KeyEventArgs e)
264 d3a13891 Panagiotis Kanavos
        {
265 d3a13891 Panagiotis Kanavos
            if (e.OriginalSource == sender)
266 d3a13891 Panagiotis Kanavos
            {
267 d3a13891 Panagiotis Kanavos
                if (e.Key == Key.Space)
268 d3a13891 Panagiotis Kanavos
                {
269 d3a13891 Panagiotis Kanavos
                    // ignore alt+space which invokes the system menu
270 d3a13891 Panagiotis Kanavos
                    if ((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt) return;
271 d3a13891 Panagiotis Kanavos
272 d3a13891 Panagiotis Kanavos
                    UpdateIsChecked(sender as DependencyObject);
273 d3a13891 Panagiotis Kanavos
                    e.Handled = true;
274 d3a13891 Panagiotis Kanavos
275 d3a13891 Panagiotis Kanavos
                }
276 d3a13891 Panagiotis Kanavos
                else if (e.Key == Key.Enter && (bool)(sender as DependencyObject).GetValue(KeyboardNavigation.AcceptsReturnProperty))
277 d3a13891 Panagiotis Kanavos
                {
278 d3a13891 Panagiotis Kanavos
                    UpdateIsChecked(sender as DependencyObject);
279 d3a13891 Panagiotis Kanavos
                    e.Handled = true;
280 d3a13891 Panagiotis Kanavos
                }
281 d3a13891 Panagiotis Kanavos
            }
282 d3a13891 Panagiotis Kanavos
        }
283 d3a13891 Panagiotis Kanavos
284 d3a13891 Panagiotis Kanavos
        private static void UpdateIsChecked(DependencyObject d)
285 d3a13891 Panagiotis Kanavos
        {
286 d3a13891 Panagiotis Kanavos
            Nullable<bool> isChecked = GetIsChecked(d);
287 d3a13891 Panagiotis Kanavos
            if (isChecked == true)
288 d3a13891 Panagiotis Kanavos
            {
289 d3a13891 Panagiotis Kanavos
                SetIsChecked(d, GetIsThreeState(d) ? (Nullable<bool>)null : (Nullable<bool>)false);
290 d3a13891 Panagiotis Kanavos
            }
291 d3a13891 Panagiotis Kanavos
            else
292 d3a13891 Panagiotis Kanavos
            {
293 d3a13891 Panagiotis Kanavos
                SetIsChecked(d, isChecked.HasValue);
294 d3a13891 Panagiotis Kanavos
            }
295 d3a13891 Panagiotis Kanavos
        }
296 d3a13891 Panagiotis Kanavos
297 d3a13891 Panagiotis Kanavos
        private static void RaiseEvent(DependencyObject target, RoutedEventArgs args)
298 d3a13891 Panagiotis Kanavos
        {
299 d3a13891 Panagiotis Kanavos
            if (target is UIElement)
300 d3a13891 Panagiotis Kanavos
            {
301 d3a13891 Panagiotis Kanavos
                (target as UIElement).RaiseEvent(args);
302 d3a13891 Panagiotis Kanavos
            }
303 d3a13891 Panagiotis Kanavos
            else if (target is ContentElement)
304 d3a13891 Panagiotis Kanavos
            {
305 d3a13891 Panagiotis Kanavos
                (target as ContentElement).RaiseEvent(args);
306 d3a13891 Panagiotis Kanavos
            }
307 d3a13891 Panagiotis Kanavos
        }
308 d3a13891 Panagiotis Kanavos
309 d3a13891 Panagiotis Kanavos
        #endregion
310 d3a13891 Panagiotis Kanavos
    }
311 d3a13891 Panagiotis Kanavos
}