// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #pragma once #include "Common/Utils.h" namespace CalculatorApp { namespace ViewModel { ref class StandardCalculatorViewModel; /// /// Model representation of a single item in the Memory list /// [Windows::UI::Xaml::Data::Bindable] public ref class MemoryItemViewModel sealed : public Windows::UI::Xaml::Data::INotifyPropertyChanged, Windows::UI::Xaml::Data::ICustomPropertyProvider { public: MemoryItemViewModel(StandardCalculatorViewModel ^ calcVM) : m_Position(-1) , m_calcVM(calcVM) { } OBSERVABLE_OBJECT(); OBSERVABLE_PROPERTY_RW(int, Position); OBSERVABLE_PROPERTY_RW(Platform::String ^, Value); virtual Windows::UI::Xaml::Data::ICustomProperty ^ GetCustomProperty(Platform::String ^ name) { return nullptr; } virtual Windows::UI::Xaml::Data::ICustomProperty ^ GetIndexedProperty(Platform::String ^ name, Windows::UI::Xaml::Interop::TypeName type) { return nullptr; } virtual property Windows::UI::Xaml::Interop::TypeName Type { Windows::UI::Xaml::Interop::TypeName get() { return this->GetType(); } } virtual Platform::String ^ GetStringRepresentation() { return Value; } void Clear(); void MemoryAdd(); void MemorySubtract(); private: StandardCalculatorViewModel ^ m_calcVM; }; } }