From 70f5b843751d596032a1e9d8b44093e352ec55b5 Mon Sep 17 00:00:00 2001 From: brianlagunas_cp Date: Thu, 24 Mar 2011 14:50:44 +0000 Subject: [PATCH] ButtonSpinner: Added AllowSpin and ShowButtonSpinner properties UpDownBase: Added AllowSpin and ShowButtonSpinner properties --- .../Implementation/ButtonSpinner.cs | 118 ++++++++++++------ .../ButtonSpinner/Themes/Generic.xaml | 4 +- .../Core/Primitives/UpDownBase.cs | 37 +++++- .../DateTimeUpDown/Themes/Generic.xaml | 5 +- .../NumericUpDown/Themes/Generic.xaml | 5 +- 5 files changed, 121 insertions(+), 48 deletions(-) diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Implementation/ButtonSpinner.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Implementation/ButtonSpinner.cs index b2c2ad99..fde872d8 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Implementation/ButtonSpinner.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Implementation/ButtonSpinner.cs @@ -14,6 +14,17 @@ namespace Microsoft.Windows.Controls { #region Properties + #region AllowSpin + + public static readonly DependencyProperty AllowSpinProperty = DependencyProperty.Register("AllowSpin", typeof(bool), typeof(ButtonSpinner), new UIPropertyMetadata(true)); + public bool AllowSpin + { + get { return (bool)GetValue(AllowSpinProperty); } + set { SetValue(AllowSpinProperty, value); } + } + + #endregion //AllowSpin + #region Content /// @@ -39,53 +50,71 @@ namespace Microsoft.Windows.Controls #endregion //Content - private ButtonBase _increaseButton; + #region DecreaseButton + + private ButtonBase _decreaseButton; /// - /// Gets or sets the IncreaseButton template part. + /// Gets or sets the DecreaseButton template part. /// - private ButtonBase IncreaseButton + private ButtonBase DecreaseButton { - get { return _increaseButton; } + get { return _decreaseButton; } set { - if (_increaseButton != null) + if (_decreaseButton != null) { - _increaseButton.Click -= OnButtonClick; + _decreaseButton.Click -= OnButtonClick; } - _increaseButton = value; + _decreaseButton = value; - if (_increaseButton != null) + if (_decreaseButton != null) { - _increaseButton.Click += OnButtonClick; + _decreaseButton.Click += OnButtonClick; } } } + #endregion //DecreaseButton - private ButtonBase _decreaseButton; + #region IncreaseButton + + private ButtonBase _increaseButton; /// - /// Gets or sets the DecreaseButton template part. + /// Gets or sets the IncreaseButton template part. /// - private ButtonBase DecreaseButton + private ButtonBase IncreaseButton { - get { return _decreaseButton; } + get { return _increaseButton; } set { - if (_decreaseButton != null) + if (_increaseButton != null) { - _decreaseButton.Click -= OnButtonClick; + _increaseButton.Click -= OnButtonClick; } - _decreaseButton = value; + _increaseButton = value; - if (_decreaseButton != null) + if (_increaseButton != null) { - _decreaseButton.Click += OnButtonClick; + _increaseButton.Click += OnButtonClick; } } } + #endregion //IncreaseButton + + #region ShowButtonSpinner + + public static readonly DependencyProperty ShowButtonSpinnerProperty = DependencyProperty.Register("ShowButtonSpinner", typeof(bool), typeof(ButtonSpinner), new UIPropertyMetadata(true)); + public bool ShowButtonSpinner + { + get { return (bool)GetValue(ShowButtonSpinnerProperty); } + set { SetValue(ShowButtonSpinnerProperty, value); } + } + + #endregion //ShowButtonSpinner + #endregion //Properties #region Constructors @@ -109,27 +138,6 @@ namespace Microsoft.Windows.Controls SetButtonUsage(); } - #endregion //Base Class Overrides - - /// - /// Occurs when the Content property value changed. - /// - /// The old value of the Content property. - /// The new value of the Content property. - protected virtual void OnContentChanged(object oldValue, object newValue) { } - - /// - /// Handle click event of IncreaseButton and DecreaseButton template parts, - /// translating Click to appropriate Spin event. - /// - /// Event sender, should be either IncreaseButton or DecreaseButton template part. - /// Event args. - private void OnButtonClick(object sender, RoutedEventArgs e) - { - SpinDirection direction = sender == IncreaseButton ? SpinDirection.Increase : SpinDirection.Decrease; - OnSpin(new SpinEventArgs(direction)); - } - /// /// Cancel LeftMouseButtonUp events originating from a button that has /// been changed to disabled. @@ -171,6 +179,36 @@ namespace Microsoft.Windows.Controls SetButtonUsage(); } + #endregion //Base Class Overrides + + #region Event Handlers + + /// + /// Handle click event of IncreaseButton and DecreaseButton template parts, + /// translating Click to appropriate Spin event. + /// + /// Event sender, should be either IncreaseButton or DecreaseButton template part. + /// Event args. + private void OnButtonClick(object sender, RoutedEventArgs e) + { + if (AllowSpin) + { + SpinDirection direction = sender == IncreaseButton ? SpinDirection.Increase : SpinDirection.Decrease; + OnSpin(new SpinEventArgs(direction)); + } + } + + #endregion //Event Handlers + + #region Methods + + /// + /// Occurs when the Content property value changed. + /// + /// The old value of the Content property. + /// The new value of the Content property. + protected virtual void OnContentChanged(object oldValue, object newValue) { } + /// /// Disables or enables the buttons based on the valid spin direction. /// @@ -187,5 +225,7 @@ namespace Microsoft.Windows.Controls DecreaseButton.IsEnabled = ((ValidSpinDirection & ValidSpinDirections.Decrease) == ValidSpinDirections.Decrease); } } + + #endregion //Methods } } diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Themes/Generic.xaml index 00d06d5f..73c19ad1 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ButtonSpinner/Themes/Generic.xaml @@ -7,6 +7,8 @@ + + @@ -40,7 +42,7 @@ - + diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Primitives/UpDownBase.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Primitives/UpDownBase.cs index 5a70b703..9be5dfb9 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Primitives/UpDownBase.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Primitives/UpDownBase.cs @@ -2,6 +2,7 @@ using System.Windows.Controls; using Microsoft.Windows.Controls.Primitives; using System.Windows.Input; +using System.Windows; namespace Microsoft.Windows.Controls.Primitives { @@ -23,6 +24,28 @@ namespace Microsoft.Windows.Controls.Primitives #region Properties + #region AllowSpin + + public static readonly DependencyProperty AllowSpinProperty = DependencyProperty.Register("AllowSpin", typeof(bool), typeof(UpDownBase), new UIPropertyMetadata(true)); + public bool AllowSpin + { + get { return (bool)GetValue(AllowSpinProperty); } + set { SetValue(AllowSpinProperty, value); } + } + + #endregion //AllowSpin + + #region ShowButtonSpinner + + public static readonly DependencyProperty ShowButtonSpinnerProperty = DependencyProperty.Register("ShowButtonSpinner", typeof(bool), typeof(UpDownBase), new UIPropertyMetadata(true)); + public bool ShowButtonSpinner + { + get { return (bool)GetValue(ShowButtonSpinnerProperty); } + set { SetValue(ShowButtonSpinnerProperty, value); } + } + + #endregion //ShowButtonSpinner + protected TextBox TextBox { get; private set; } private Spinner _spinner; @@ -60,19 +83,22 @@ namespace Microsoft.Windows.Controls.Primitives { case Key.Up: { - DoIncrement(); + if (AllowSpin) + DoIncrement(); e.Handled = true; break; } case Key.Down: { - DoDecrement(); + if (AllowSpin) + DoDecrement(); e.Handled = true; break; } case Key.Enter: { - SyncTextAndValueProperties(UpDownBase.TextProperty, TextBox.Text); + if (IsEditable) + SyncTextAndValueProperties(UpDownBase.TextProperty, TextBox.Text); break; } } @@ -82,7 +108,7 @@ namespace Microsoft.Windows.Controls.Primitives { base.OnMouseWheel(e); - if (!e.Handled) + if (!e.Handled && AllowSpin) { if (e.Delta < 0) { @@ -103,7 +129,8 @@ namespace Microsoft.Windows.Controls.Primitives private void OnSpinnerSpin(object sender, SpinEventArgs e) { - OnSpin(e); + if (AllowSpin) + OnSpin(e); } #endregion //Event Handlers diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Themes/Generic.xaml index 188d4c2e..efff105c 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Themes/Generic.xaml @@ -8,12 +8,13 @@