merge with master

This commit is contained in:
Rudy Huyn
2019-12-02 19:36:54 -08:00
parent 39885668ae
commit 73d6a32add
247 changed files with 27860 additions and 8218 deletions

View File

@@ -0,0 +1,72 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#include "pch.h"
#include "ControlSizeTrigger.h"
using namespace CalculatorApp::Views::StateTriggers;
using namespace Platform;
using namespace Windows::Foundation;
using namespace Windows::UI::Xaml;
DEPENDENCY_PROPERTY_INITIALIZATION(ControlSizeTrigger, Source);
DEPENDENCY_PROPERTY_INITIALIZATION(ControlSizeTrigger, MinHeight);
DEPENDENCY_PROPERTY_INITIALIZATION(ControlSizeTrigger, MinWidth);
ControlSizeTrigger::ControlSizeTrigger()
{
SetActive(false);
}
ControlSizeTrigger::~ControlSizeTrigger()
{
UnregisterSizeChanged(Source);
}
void ControlSizeTrigger::OnSourcePropertyChanged(FrameworkElement ^ oldValue, FrameworkElement ^ newValue)
{
UnregisterSizeChanged(oldValue);
RegisterSizeChanged(newValue);
}
void ControlSizeTrigger::RegisterSizeChanged(FrameworkElement ^ element)
{
if (element == nullptr)
{
return;
}
if (element != Source)
{
UnregisterSizeChanged(Source);
}
m_sizeChangedToken = element->SizeChanged += ref new SizeChangedEventHandler(this, &ControlSizeTrigger::OnSizeChanged);
UpdateIsActive(element->RenderSize);
}
void ControlSizeTrigger::UnregisterSizeChanged(FrameworkElement ^ element)
{
if (element != nullptr && m_sizeChangedToken.Value != 0)
{
element->SizeChanged -= m_sizeChangedToken;
m_sizeChangedToken.Value = 0;
}
}
void ControlSizeTrigger::OnSizeChanged(Object ^ sender, SizeChangedEventArgs ^ e)
{
UpdateIsActive(e->NewSize);
}
void ControlSizeTrigger::UpdateIsActive(Size sourceSize)
{
if (MinHeight >= 0)
{
SetActive(sourceSize.Height >= MinHeight && (MinWidth < 0 || sourceSize.Width >= MinWidth));
}
else
{
SetActive(MinWidth >= 0 && sourceSize.Width >= MinWidth);
}
}

View File

@@ -0,0 +1,37 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#pragma once
#include "CalcViewModel/Common/Utils.h"
namespace CalculatorApp::Views::StateTriggers
{
public ref class ControlSizeTrigger sealed : public Windows::UI::Xaml::StateTriggerBase
{
public:
ControlSizeTrigger();
DEPENDENCY_PROPERTY_OWNER(ControlSizeTrigger);
DEPENDENCY_PROPERTY_WITH_CALLBACK(Windows::UI::Xaml::FrameworkElement^, Source);
DEPENDENCY_PROPERTY_WITH_DEFAULT(double, MinHeight, -1);
DEPENDENCY_PROPERTY_WITH_DEFAULT(double, MinWidth, -1);
private:
~ControlSizeTrigger();
void OnSourcePropertyChanged(Windows::UI::Xaml::FrameworkElement^ oldValue, Windows::UI::Xaml::FrameworkElement^ newValue);
void RegisterSizeChanged(Windows::UI::Xaml::FrameworkElement^ element);
void UnregisterSizeChanged(Windows::UI::Xaml::FrameworkElement^ element);
void OnSizeChanged(Platform::Object^ sender, Windows::UI::Xaml::SizeChangedEventArgs^ e);
void UpdateIsActive(Windows::Foundation::Size sourceSize);
private:
Windows::Foundation::EventRegistrationToken m_sizeChangedToken;
};
}