@@ -813,7 +813,8 @@ private void textBox_PreviewKeyDown(object sender, KeyEventArgs e)
813
813
return ;
814
814
}
815
815
816
- if ( e . Key == Key . Up )
816
+ // support small value change via up cursor key
817
+ if ( e . Key == Key . Up && IsModifierKeyDown ( ) == false )
817
818
{
818
819
if ( CanIncreaseCommand ( ) == true )
819
820
IncreaseCommand . Execute ( null , this ) ;
@@ -822,29 +823,33 @@ private void textBox_PreviewKeyDown(object sender, KeyEventArgs e)
822
823
return ;
823
824
}
824
825
825
- if ( e . Key == Key . Down )
826
+ // support small value change via down cursor key
827
+ if ( e . Key == Key . Down && IsModifierKeyDown ( ) == false )
826
828
{
827
829
if ( CanDecreaseCommand ( ) == true )
828
830
DecreaseCommand . Execute ( null , this ) ;
829
831
830
832
e . Handled = true ;
831
833
return ;
832
834
}
833
- // support disable large change?
834
- if ( e . Key == Key . Right )
835
+
836
+ // support large value change via right cursor key
837
+ if ( e . Key == Key . Right && IsModifierKeyDown ( ) == false )
835
838
{
836
839
OnIncrement ( LargeStepSize ) ;
837
840
e . Handled = true ;
838
841
return ;
839
842
}
840
843
841
- if ( e . Key == Key . Left )
844
+ // support large value change via left cursor key
845
+ if ( e . Key == Key . Left && IsModifierKeyDown ( ) == false )
842
846
{
843
847
OnDecrement ( LargeStepSize ) ;
844
848
e . Handled = true ;
845
849
return ;
846
850
}
847
851
852
+ // update value typed by the user
848
853
if ( e . Key == Key . Enter )
849
854
{
850
855
_PART_TextBox ? . GetBindingExpression ( TextBox . TextProperty ) . UpdateSource ( ) ;
@@ -853,6 +858,17 @@ private void textBox_PreviewKeyDown(object sender, KeyEventArgs e)
853
858
}
854
859
}
855
860
861
+ /// <summary>
862
+ /// Gets whether any keyboard modifier (ALT, SHIFT, or CTRL) is down or not.
863
+ /// </summary>
864
+ /// <returns></returns>
865
+ private bool IsModifierKeyDown ( )
866
+ {
867
+ return Keyboard . IsKeyDown ( Key . LeftShift ) || Keyboard . IsKeyDown ( Key . RightShift ) ||
868
+ Keyboard . IsKeyDown ( Key . LeftCtrl ) || Keyboard . IsKeyDown ( Key . RightCtrl ) ||
869
+ Keyboard . IsKeyDown ( Key . LeftAlt ) || Keyboard . IsKeyDown ( Key . RightAlt ) ;
870
+ }
871
+
856
872
/// <summary>
857
873
/// Checks if the current string entered in the textbox is:
858
874
/// 1) A valid number (syntax)
0 commit comments