diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml index 89730bef..0a66bf41 100644 --- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml +++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml @@ -727,7 +727,8 @@ Grid.Row="2" Grid.RowSpan="4" Grid.Column="1" - Grid.ColumnSpan="3" + Grid.ColumnSpan="4" + ExtraColumns="1" ButtonStyle="{StaticResource NumericButtonStyle18}" CurrentRadixType="{x:Bind Model.CurrentRadixType, Mode=OneWay}"/> diff --git a/src/Calculator/Views/CalculatorScientificOperators.xaml b/src/Calculator/Views/CalculatorScientificOperators.xaml index 12478c7f..263b8565 100644 --- a/src/Calculator/Views/CalculatorScientificOperators.xaml +++ b/src/Calculator/Views/CalculatorScientificOperators.xaml @@ -1303,7 +1303,8 @@ Grid.Row="4" Grid.RowSpan="4" Grid.Column="1" - Grid.ColumnSpan="3" + Grid.ColumnSpan="4" + ExtraColumns="1" AutomationProperties.HeadingLevel="Level1" AutomationProperties.Name="{utils:ResourceString Name=NumberPad/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}" ButtonStyle="{StaticResource NumericButtonStyle24}"/> diff --git a/src/Calculator/Views/CalculatorStandardOperators.xaml b/src/Calculator/Views/CalculatorStandardOperators.xaml index ac54b954..fe50eda1 100644 --- a/src/Calculator/Views/CalculatorStandardOperators.xaml +++ b/src/Calculator/Views/CalculatorStandardOperators.xaml @@ -329,7 +329,8 @@ Grid.Row="2" Grid.RowSpan="4" Grid.Column="2" - Grid.ColumnSpan="3" + Grid.ColumnSpan="4" + ExtraColumns="1" AutomationProperties.HeadingLevel="Level1" AutomationProperties.Name="{utils:ResourceString Name=NumberPad/[using:Windows.UI.Xaml.Automation]AutomationProperties/Name}" ButtonStyle="{StaticResource NumericButtonStyle24}"/> diff --git a/src/Calculator/Views/NumberPad.xaml.cs b/src/Calculator/Views/NumberPad.xaml.cs index 0f766bdc..0ee7bff8 100644 --- a/src/Calculator/Views/NumberPad.xaml.cs +++ b/src/Calculator/Views/NumberPad.xaml.cs @@ -1,3 +1,4 @@ +using System; using CalculatorApp.ViewModel.Common; using Windows.UI.Xaml; @@ -29,6 +30,18 @@ namespace CalculatorApp Num9Button.Content = localizationSettings.GetDigitSymbolFromEnUsDigit('9'); } + public int ExtraColumns + { + get => (int)GetValue(ExtraColumnsProperty); + set => SetValue(ExtraColumnsProperty, value); + } + + public static readonly DependencyProperty ExtraColumnsProperty = + DependencyProperty.Register(nameof(ExtraColumns), typeof(int), typeof(NumberPad), new PropertyMetadata(0, (sender, args) => + { + ((NumberPad)sender).OnExtraColumnsPropertyChanged((int)args.OldValue, (int)args.NewValue); + })); + public Windows.UI.Xaml.Style ButtonStyle { get => (Windows.UI.Xaml.Style)GetValue(ButtonStyleProperty); @@ -67,6 +80,29 @@ namespace CalculatorApp } } + private void OnExtraColumnsPropertyChanged(int oldValue, int newValue) + { + if (newValue < 0) + { + throw new ArgumentException($"ExtraColumns of value {newValue} is smaller than 0."); + } + var columnDefinitions = Root.ColumnDefinitions; + if (newValue > oldValue) + { + for (int i = oldValue; i < newValue; ++i) + { + columnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }); + } + } + else + { + for (int i = oldValue; i > newValue; --i) + { + columnDefinitions.RemoveAt(columnDefinitions.Count - 1); + } + } + } + private void OnCurrentRadixTypePropertyChanged(NumberBase oldValue, NumberBase newValue) { Num0Button.IsEnabled = true;