// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #include "pch.h" #include "CalculatorButton.h" #include "CalcViewModel/Common/CalculatorButtonPressedEventArgs.h" using namespace CalculatorApp; using namespace CalculatorApp::Common; using namespace CalculatorApp::Controls; using namespace Windows::System; using namespace Windows::UI::Xaml; using namespace Windows::UI::Xaml::Input; using namespace Windows::UI::Xaml::Data; using namespace Platform; using namespace Windows::Foundation::Collections; DEPENDENCY_PROPERTY_INITIALIZATION(CalculatorButton, ButtonId); DEPENDENCY_PROPERTY_INITIALIZATION(CalculatorButton, AuditoryFeedback); DEPENDENCY_PROPERTY_INITIALIZATION(CalculatorButton, HoverBackground); DEPENDENCY_PROPERTY_INITIALIZATION(CalculatorButton, HoverForeground); DEPENDENCY_PROPERTY_INITIALIZATION(CalculatorButton, PressBackground); DEPENDENCY_PROPERTY_INITIALIZATION(CalculatorButton, PressForeground); CalculatorButton::CalculatorButton() { // Set the default bindings for this button, these can be overwritten by Xaml if needed // These are a replacement for binding in styles Binding ^ commandBinding = ref new Binding(); commandBinding->Path = ref new PropertyPath("ButtonPressed"); this->SetBinding(Button::CommandProperty, commandBinding); } void CalculatorButton::OnKeyDown(KeyRoutedEventArgs ^ e) { // Ignore the Enter key if (e->Key == VirtualKey::Enter) { return; } Button::OnKeyDown(e); } void CalculatorButton::OnKeyUp(KeyRoutedEventArgs ^ e) { // Ignore the Enter key if (e->Key == VirtualKey::Enter) { return; } Button::OnKeyUp(e); } void CalculatorButton::OnButtonIdPropertyChanged(NumbersAndOperatorsEnum /*oldValue*/, NumbersAndOperatorsEnum newValue) { this->CommandParameter = ref new CalculatorButtonPressedEventArgs(AuditoryFeedback, newValue); } void CalculatorButton::OnAuditoryFeedbackPropertyChanged(String ^ /*oldValue*/, String ^ newValue) { this->CommandParameter = ref new CalculatorButtonPressedEventArgs(newValue, ButtonId); }