make ControlSizeTrigger works even if the control is already loaded (#738)
This commit is contained in:
parent
bc2d2d4e9d
commit
25cdca991c
@ -31,20 +31,23 @@ void ControlSizeTrigger::OnSourcePropertyChanged(FrameworkElement^ oldValue, Fra
|
||||
|
||||
void ControlSizeTrigger::RegisterSizeChanged(FrameworkElement ^ element)
|
||||
{
|
||||
if (element == nullptr) { return; }
|
||||
if (element == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (element != Source)
|
||||
{
|
||||
UnregisterSizeChanged(Source);
|
||||
}
|
||||
|
||||
m_sizeChangedToken =
|
||||
element->SizeChanged += ref new SizeChangedEventHandler(this, &ControlSizeTrigger::OnSizeChanged);
|
||||
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))
|
||||
if (element != nullptr && m_sizeChangedToken.Value != 0)
|
||||
{
|
||||
element->SizeChanged -= m_sizeChangedToken;
|
||||
m_sizeChangedToken.Value = 0;
|
||||
@ -58,23 +61,12 @@ void ControlSizeTrigger::OnSizeChanged(Object^ sender, SizeChangedEventArgs^ e)
|
||||
|
||||
void ControlSizeTrigger::UpdateIsActive(Size sourceSize)
|
||||
{
|
||||
if (Source != nullptr && MinWidth > 0 || MinHeight > 0)
|
||||
if (MinHeight >= 0)
|
||||
{
|
||||
if (MinHeight > 0 && MinWidth > 0)
|
||||
{
|
||||
SetActive((sourceSize.Height >= MinHeight) && (sourceSize.Width >= MinWidth));
|
||||
}
|
||||
else if (MinHeight > 0)
|
||||
{
|
||||
SetActive(sourceSize.Height >= MinHeight);
|
||||
SetActive(sourceSize.Height >= MinHeight && (MinWidth < 0 || sourceSize.Width >= MinWidth));
|
||||
}
|
||||
else
|
||||
{
|
||||
SetActive(sourceSize.Width >= MinWidth);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetActive(false);
|
||||
SetActive(MinWidth >= 0 && sourceSize.Width >= MinWidth);
|
||||
}
|
||||
}
|
||||
|
@ -16,9 +16,9 @@ namespace CalculatorApp::Views::StateTriggers
|
||||
|
||||
DEPENDENCY_PROPERTY_WITH_CALLBACK(Windows::UI::Xaml::FrameworkElement^, Source);
|
||||
|
||||
DEPENDENCY_PROPERTY_WITH_DEFAULT(double, MinHeight, 0.0);
|
||||
DEPENDENCY_PROPERTY_WITH_DEFAULT(double, MinHeight, -1);
|
||||
|
||||
DEPENDENCY_PROPERTY_WITH_DEFAULT(double, MinWidth, 0.0);
|
||||
DEPENDENCY_PROPERTY_WITH_DEFAULT(double, MinWidth, -1);
|
||||
|
||||
private:
|
||||
~ControlSizeTrigger();
|
||||
|
Loading…
Reference in New Issue
Block a user