bool VisualStateUtilities::ShouldContinueTreeWalk()

in src/BehaviorsSDKNative/Microsoft.Xaml.Interactivity/VisualStateUtilities.cpp [100:117]


bool VisualStateUtilities::ShouldContinueTreeWalk(FrameworkElement^ element)
{
	if (element == nullptr || dynamic_cast<UserControl^>(element) != nullptr)
	{
		return false;
	}
	else if (element->Parent == nullptr)
	{
		// Stop if parent's parent is null AND parent isn't the template root of a ControlTemplate or DataTemplate
		FrameworkElement^ templatedParent = dynamic_cast<FrameworkElement^>(VisualTreeHelper::GetParent(element));
		if (templatedParent == nullptr || (!(dynamic_cast<Control^>(element) != nullptr) && !(dynamic_cast<ContentPresenter^>(element) != nullptr)))
		{
			return false;
		}
	}

	return true;
}