* move KeyboardShortcutManager, ValidationConverter and ViewState to Calculator * remove dead code listed in #753 * remove Microsoft.UI.Xaml nuget package from CalcViewModel
93 lines
3.3 KiB
C++
93 lines
3.3 KiB
C++
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License.
|
|
|
|
#pragma once
|
|
|
|
namespace CalculatorApp
|
|
{
|
|
namespace Common
|
|
{
|
|
public
|
|
ref class ValidSelectedItemConverter sealed : public Windows::UI::Xaml::Data::IValueConverter
|
|
{
|
|
public:
|
|
ValidSelectedItemConverter()
|
|
{
|
|
}
|
|
|
|
private:
|
|
virtual Platform::Object
|
|
^ Convert(
|
|
Platform::Object ^ value,
|
|
Windows::UI::Xaml::Interop::TypeName /*targetType*/,
|
|
Platform::Object ^ /*parameter*/,
|
|
Platform::String ^ /*language*/) = Windows::UI::Xaml::Data::IValueConverter::Convert
|
|
{
|
|
// Pass through as we don't want to change the value from the source
|
|
return value;
|
|
}
|
|
|
|
virtual Platform::Object
|
|
^ ConvertBack(
|
|
Platform::Object ^ value,
|
|
Windows::UI::Xaml::Interop::TypeName /*targetType*/,
|
|
Platform::Object ^ /*parameter*/,
|
|
Platform::String ^ /*language*/) = Windows::UI::Xaml::Data::IValueConverter::ConvertBack
|
|
{
|
|
if (value)
|
|
{
|
|
return value;
|
|
}
|
|
// Stop the binding if the object is nullptr
|
|
return Windows::UI::Xaml::DependencyProperty::UnsetValue;
|
|
}
|
|
};
|
|
|
|
public
|
|
ref class ValidSelectedIndexConverter sealed : public Windows::UI::Xaml::Data::IValueConverter
|
|
{
|
|
public:
|
|
ValidSelectedIndexConverter()
|
|
{
|
|
}
|
|
|
|
private:
|
|
virtual Platform::Object
|
|
^ Convert(
|
|
Platform::Object ^ value,
|
|
Windows::UI::Xaml::Interop::TypeName /*targetType*/,
|
|
Platform::Object ^ /*parameter*/,
|
|
Platform::String ^ /*language*/) = Windows::UI::Xaml::Data::IValueConverter::Convert
|
|
{
|
|
// Pass through as we don't want to change the value from the source
|
|
return value;
|
|
}
|
|
|
|
virtual Platform::Object
|
|
^ ConvertBack(
|
|
Platform::Object ^ value,
|
|
Windows::UI::Xaml::Interop::TypeName /*targetType*/,
|
|
Platform::Object ^ /*parameter*/,
|
|
Platform::String ^ /*language*/) = Windows::UI::Xaml::Data::IValueConverter::ConvertBack
|
|
{
|
|
// The value to be valid has to be a boxed int32 value
|
|
// extract that value and ensure it is valid, ie >= 0
|
|
if (value)
|
|
{
|
|
auto box = dynamic_cast<Windows::Foundation::IPropertyValue ^>(value);
|
|
if (box && box->Type == Windows::Foundation::PropertyType::Int32)
|
|
{
|
|
int index = box->GetInt32();
|
|
if (index >= 0)
|
|
{
|
|
return value;
|
|
}
|
|
}
|
|
}
|
|
// The value is not valid therefore stop the binding right here
|
|
return Windows::UI::Xaml::DependencyProperty::UnsetValue;
|
|
}
|
|
};
|
|
}
|
|
}
|