diff --git a/src/CalcViewModel/StandardCalculatorViewModel.cpp b/src/CalcViewModel/StandardCalculatorViewModel.cpp index af2c7bc..ca99e31 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.cpp +++ b/src/CalcViewModel/StandardCalculatorViewModel.cpp @@ -1218,7 +1218,6 @@ void StandardCalculatorViewModel::ResetDisplay() AreHEXButtonsEnabled = false; CurrentRadixType = (int)RADIX_TYPE::DEC_RADIX; m_standardCalculatorManager.SetRadix(DEC_RADIX); - ProgModeRadixChange(); } void StandardCalculatorViewModel::SetPrecision(int32_t precision) @@ -1236,7 +1235,6 @@ void StandardCalculatorViewModel::SwitchProgrammerModeBase(RADIX_TYPE radixType) AreHEXButtonsEnabled = (radixType == RADIX_TYPE::HEX_RADIX); CurrentRadixType = (int)radixType; m_standardCalculatorManager.SetRadix(radixType); - ProgModeRadixChange(); } void StandardCalculatorViewModel::SetMemorizedNumbersString() diff --git a/src/CalcViewModel/StandardCalculatorViewModel.h b/src/CalcViewModel/StandardCalculatorViewModel.h index 77480dd..c4b693c 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.h +++ b/src/CalcViewModel/StandardCalculatorViewModel.h @@ -32,8 +32,6 @@ namespace CalculatorApp #define ASCII_0 48 public delegate void HideMemoryClickedHandler(); - public - delegate void ProgModeRadixChangeHandler(); [Windows::UI::Xaml::Data::Bindable] public ref class StandardCalculatorViewModel sealed : public Windows::UI::Xaml::Data::INotifyPropertyChanged { @@ -90,7 +88,6 @@ namespace CalculatorApp COMMAND_FOR_METHOD(MemorySubtract, StandardCalculatorViewModel::OnMemorySubtract); event HideMemoryClickedHandler ^ HideMemoryClicked; - event ProgModeRadixChangeHandler ^ ProgModeRadixChange; property bool IsShiftChecked { diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml index eefbb75..0496bcd 100644 --- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml +++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml @@ -9,8 +9,6 @@ x:Name="ControlRoot" d:DesignHeight="395" d:DesignWidth="315" - Loaded="OnLoaded" - Unloaded="OnUnloaded" mc:Ignorable="d"> @@ -344,7 +342,8 @@ Grid.RowSpan="4" Grid.Column="2" Grid.ColumnSpan="3" - ButtonStyle="{StaticResource NumericButtonStyle18}"/> + ButtonStyle="{StaticResource NumericButtonStyle18}" + CurrentRadixType="{x:Bind Model.CurrentRadixType, Mode=OneWay}"/> ProgModeRadixChange += - ref new ProgModeRadixChangeHandler(this, &CalculatorProgrammerRadixOperators::ProgModeRadixChange); -} -void CalculatorProgrammerRadixOperators::OnUnloaded(Object ^, RoutedEventArgs ^) -{ - Model->ProgModeRadixChange -= m_progModeRadixChangeToken; -} - void CalculatorProgrammerRadixOperators::Shift_Clicked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) { bool isShiftChecked = static_cast(sender)->IsChecked->Value; @@ -67,11 +57,6 @@ void CalculatorProgrammerRadixOperators::Shift_Clicked(Platform::Object ^ sender } } -void CalculatorProgrammerRadixOperators::ProgModeRadixChange() -{ - NumberPad->ProgModeRadixChange(); -} - bool CalculatorProgrammerRadixOperators::IsErrorVisualState::get() { return m_isErrorVisualState; diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h index c0055e7..e015707 100644 --- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h +++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h @@ -32,12 +32,8 @@ namespace CalculatorApp private: void Shift_Clicked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); - void OnLoaded(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); - void OnUnloaded(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); - void ProgModeRadixChange(); bool m_isErrorVisualState; - Windows::Foundation::EventRegistrationToken m_progModeRadixChangeToken; void OpenParenthesisButton_GotFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); }; } diff --git a/src/Calculator/Views/NumberPad.xaml.cpp b/src/Calculator/Views/NumberPad.xaml.cpp index 9a6ca2d..8654764 100644 --- a/src/Calculator/Views/NumberPad.xaml.cpp +++ b/src/Calculator/Views/NumberPad.xaml.cpp @@ -30,6 +30,7 @@ using namespace CalculatorApp::Common; // The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236 DEPENDENCY_PROPERTY_INITIALIZATION(NumberPad, ButtonStyle); +DEPENDENCY_PROPERTY_INITIALIZATION(NumberPad, CurrentRadixType); NumberPad::NumberPad() : m_isErrorVisualState(false) @@ -51,7 +52,7 @@ NumberPad::NumberPad() this->Num9Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('9'); } -void NumberPad::ProgModeRadixChange() +void NumberPad::OnCurrentRadixTypePropertyChanged(int /* oldValue */, int newValue) { Num0Button->IsEnabled = true; Num1Button->IsEnabled = true; @@ -64,8 +65,7 @@ void NumberPad::ProgModeRadixChange() Num8Button->IsEnabled = true; Num9Button->IsEnabled = true; - auto vm = safe_cast(this->DataContext); - RADIX_TYPE radixType = vm->GetCurrentRadixType(); + auto radixType = safe_cast(newValue); if (radixType == RADIX_TYPE::BIN_RADIX) { diff --git a/src/Calculator/Views/NumberPad.xaml.h b/src/Calculator/Views/NumberPad.xaml.h index 119987d..654734e 100644 --- a/src/Calculator/Views/NumberPad.xaml.h +++ b/src/Calculator/Views/NumberPad.xaml.h @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // @@ -10,6 +10,7 @@ #include "Views/NumberPad.g.h" #include "CalcViewModel/Common/KeyboardShortcutManager.h" +#include "CalcManager/Header Files/RadixType.h" namespace CalculatorApp { @@ -20,6 +21,7 @@ namespace CalculatorApp DEPENDENCY_PROPERTY_OWNER(NumberPad); DEPENDENCY_PROPERTY(Windows::UI::Xaml::Style ^, ButtonStyle); + DEPENDENCY_PROPERTY_WITH_DEFAULT_AND_CALLBACK(int, CurrentRadixType, safe_cast(::RADIX_TYPE::DEC_RADIX)); property bool IsErrorVisualState { @@ -27,9 +29,10 @@ namespace CalculatorApp void set(bool value); } - void ProgModeRadixChange(); - private: + void OnCurrentRadixTypePropertyChanged(int oldValue, int newValue); + + bool m_isErrorVisualState; }; }