diff --git a/ModernWpf.Controls/NumberBox/NumberBox.cs b/ModernWpf.Controls/NumberBox/NumberBox.cs index 1b29f756..b393bc73 100644 --- a/ModernWpf.Controls/NumberBox/NumberBox.cs +++ b/ModernWpf.Controls/NumberBox/NumberBox.cs @@ -58,6 +58,21 @@ public NumberBox() GotKeyboardFocus += OnNumberBoxGotFocus; LostKeyboardFocus += OnNumberBoxLostFocus; + + SetDefaultInputScope(); + } + + void SetDefaultInputScope() + { + // Sets the default value of the InputScope property. + // Note that InputScope is a class that cannot be set to a default value within the IDL. + var inputScopeName = new InputScopeName(InputScopeNameValue.Number); + var inputScope = new InputScope(); + inputScope.Names.Add(inputScopeName); + + SetValue(InputScopeProperty, inputScope); + + return; } private INumberBoxNumberFormatter GetRegionalSettingsAwareDecimalFormatter() diff --git a/ModernWpf.Controls/NumberBox/NumberBox.xaml b/ModernWpf.Controls/NumberBox/NumberBox.xaml index cb77364a..4e4609b1 100644 --- a/ModernWpf.Controls/NumberBox/NumberBox.xaml +++ b/ModernWpf.Controls/NumberBox/NumberBox.xaml @@ -360,7 +360,7 @@ + { + Content.UpdateLayout(); + var inputTextBox = TestUtilities.FindDescendents(numberBox).Where(e => e.Name == "InputBox").Single(); + + Verify.AreEqual(1, inputTextBox.InputScope.Names.Count); + Verify.AreEqual(InputScopeNameValue.Number, ((InputScopeName)inputTextBox.InputScope.Names[0]).NameValue, "The default InputScope should be 'Number'."); + + var scopeName = new InputScopeName(); + scopeName.NameValue = InputScopeNameValue.CurrencyAmountAndSymbol; + var scope = new InputScope(); + scope.Names.Add(scopeName); + + numberBox.InputScope = scope; + Content.UpdateLayout(); + + Verify.AreEqual(1, inputTextBox.InputScope.Names.Count); + Verify.AreEqual(InputScopeNameValue.CurrencyAmountAndSymbol, ((InputScopeName)inputTextBox.InputScope.Names[0]).NameValue, "The InputScope should be 'CurrencyAmountAndSymbol'."); + }); + + return; + } + [TestMethod] public void VerifyIsEnabledChangeUpdatesVisualState() { diff --git a/test/ModernWpfTestApp/NumberBoxPage.xaml b/test/ModernWpfTestApp/NumberBoxPage.xaml index dfc664a0..99a92e7b 100644 --- a/test/ModernWpfTestApp/NumberBoxPage.xaml +++ b/test/ModernWpfTestApp/NumberBoxPage.xaml @@ -37,6 +37,14 @@ + + + + + + + + diff --git a/test/ModernWpfTestApp/NumberBoxPage.xaml.cs b/test/ModernWpfTestApp/NumberBoxPage.xaml.cs index e5001654..556a0fa4 100644 --- a/test/ModernWpfTestApp/NumberBoxPage.xaml.cs +++ b/test/ModernWpfTestApp/NumberBoxPage.xaml.cs @@ -14,6 +14,7 @@ using System.Windows.Markup; using MUXControlsTestApp.Utilities; using ModernWpf; +using System.Windows.Input; namespace MUXControlsTestApp { @@ -29,6 +30,25 @@ public NumberBoxPage() TestNumberBox.RegisterPropertyChangedCallback(NumberBox.TextProperty, new DependencyPropertyChangedCallback(TextPropertyChanged)); } + private void InputScope_Changed(object sender, RoutedEventArgs e) + { + if (TestNumberBox != null && + sender is ComboBox comboBox && + comboBox.SelectedItem is ComboBoxItem item) + { + var scopeName = new InputScopeName(); + scopeName.NameValue = (InputScopeNameValue)Enum.Parse(typeof(InputScopeNameValue), item.Content?.ToString() ?? string.Empty, true); + + var scope = new InputScope(); + scope.Names.Add(scopeName); + + TestNumberBox.InputScope = scope; + + // Help testing by returning focus to the NumberBox to see the keyboard change + TestNumberBox.Focus(/*FocusState.Keyboard*/); + } + } + private void SpinMode_Changed(object sender, RoutedEventArgs e) { if (TestNumberBox != null)