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 | } |