@@ -193,34 +193,10 @@ private void ThemeListener_ThemeChanged(ThemeListener sender)
193
193
OnColorsChanged ( ) ;
194
194
}
195
195
196
- private void RadialGauge_KeyDown ( object sender , KeyRoutedEventArgs e )
197
- {
198
- double step = SmallChange ;
199
- var ctrl = Window . Current . CoreWindow . GetKeyState ( VirtualKey . Control ) ;
200
- if ( ctrl . HasFlag ( CoreVirtualKeyStates . Down ) )
201
- {
202
- step = LargeChange ;
203
- }
204
-
205
- step = Math . Max ( StepSize , step ) ;
206
- if ( ( e . Key == VirtualKey . Left ) || ( e . Key == VirtualKey . Down ) )
207
- {
208
- Value = Math . Max ( Minimum , Value - step ) ;
209
- e . Handled = true ;
210
- return ;
211
- }
212
-
213
- if ( ( e . Key == VirtualKey . Right ) || ( e . Key == VirtualKey . Up ) )
214
- {
215
- Value = Math . Min ( Maximum , Value + step ) ;
216
- e . Handled = true ;
217
- }
218
- }
219
-
220
196
private void RadialGauge_Unloaded ( object sender , RoutedEventArgs e )
221
197
{
222
198
// Unregister event handlers.
223
- KeyDown -= RadialGauge_KeyDown ;
199
+ KeyboardAccelerators . Clear ( ) ;
224
200
ThemeListener . ThemeChanged -= ThemeListener_ThemeChanged ;
225
201
PointerReleased -= RadialGauge_PointerReleased ;
226
202
Unloaded -= RadialGauge_Unloaded ;
@@ -439,10 +415,58 @@ protected override void OnApplyTemplate()
439
415
_tickBrush = ReadLocalValue ( TickBrushProperty ) as SolidColorBrush ;
440
416
_foreground = ReadLocalValue ( ForegroundProperty ) as SolidColorBrush ;
441
417
442
- // Register event handlers.
418
+ // Small step
419
+ AddKeyboardAccelerator ( VirtualKeyModifiers . None , VirtualKey . Left , ( _ , kaea ) =>
420
+ {
421
+ Value = Math . Max ( Minimum , Value - Math . Max ( StepSize , SmallChange ) ) ;
422
+ kaea . Handled = true ;
423
+ } ) ;
424
+
425
+ AddKeyboardAccelerator ( VirtualKeyModifiers . None , VirtualKey . Up , ( _ , kaea ) =>
426
+ {
427
+ Value = Math . Min ( Maximum , Value + Math . Max ( StepSize , SmallChange ) ) ;
428
+ kaea . Handled = true ;
429
+ } ) ;
430
+
431
+ AddKeyboardAccelerator ( VirtualKeyModifiers . None , VirtualKey . Right , ( _ , kaea ) =>
432
+ {
433
+ Value = Math . Min ( Maximum , Value + Math . Max ( StepSize , SmallChange ) ) ;
434
+ kaea . Handled = true ;
435
+ } ) ;
436
+
437
+ AddKeyboardAccelerator ( VirtualKeyModifiers . None , VirtualKey . Down , ( _ , kaea ) =>
438
+ {
439
+ Value = Math . Max ( Minimum , Value - Math . Max ( StepSize , SmallChange ) ) ;
440
+ kaea . Handled = true ;
441
+ } ) ;
442
+
443
+ // Large step
444
+ AddKeyboardAccelerator ( VirtualKeyModifiers . Control , VirtualKey . Left , ( _ , kaea ) =>
445
+ {
446
+ Value = Math . Max ( Minimum , Value - Math . Max ( StepSize , LargeChange ) ) ;
447
+ kaea . Handled = true ;
448
+ } ) ;
449
+
450
+ AddKeyboardAccelerator ( VirtualKeyModifiers . Control , VirtualKey . Up , ( _ , kaea ) =>
451
+ {
452
+ Value = Math . Min ( Maximum , Value + Math . Max ( StepSize , LargeChange ) ) ;
453
+ kaea . Handled = true ;
454
+ } ) ;
455
+
456
+ AddKeyboardAccelerator ( VirtualKeyModifiers . Control , VirtualKey . Right , ( _ , kaea ) =>
457
+ {
458
+ Value = Math . Min ( Maximum , Value + Math . Max ( StepSize , LargeChange ) ) ;
459
+ kaea . Handled = true ;
460
+ } ) ;
461
+
462
+ AddKeyboardAccelerator ( VirtualKeyModifiers . Control , VirtualKey . Down , ( _ , kaea ) =>
463
+ {
464
+ Value = Math . Max ( Minimum , Value - Math . Max ( StepSize , LargeChange ) ) ;
465
+ kaea . Handled = true ;
466
+ } ) ;
467
+
443
468
PointerReleased += RadialGauge_PointerReleased ;
444
469
ThemeListener . ThemeChanged += ThemeListener_ThemeChanged ;
445
- KeyDown += RadialGauge_KeyDown ;
446
470
447
471
// Apply color scheme.
448
472
OnColorsChanged ( ) ;
@@ -830,5 +854,19 @@ private double RoundToMultiple(double number, double multiple)
830
854
831
855
return number + modulo ;
832
856
}
857
+
858
+ private void AddKeyboardAccelerator (
859
+ VirtualKeyModifiers keyModifiers ,
860
+ VirtualKey key ,
861
+ TypedEventHandler < KeyboardAccelerator , KeyboardAcceleratorInvokedEventArgs > handler )
862
+ {
863
+ var accelerator = new KeyboardAccelerator ( )
864
+ {
865
+ Modifiers = keyModifiers ,
866
+ Key = key
867
+ } ;
868
+ accelerator . Invoked += handler ;
869
+ KeyboardAccelerators . Add ( accelerator ) ;
870
+ }
833
871
}
834
872
}
0 commit comments