|
#nullable disable
using System;
using System.Collections.Generic;
namespace Microsoft.Maui.Controls
{
/// <include file="../../docs/Microsoft.Maui.Controls/TemplatedPage.xml" path="Type[@FullName='Microsoft.Maui.Controls.TemplatedPage']/Docs/*" />
public class TemplatedPage : Page, IControlTemplated
{
/// <summary>Bindable property for <see cref="ControlTemplate"/>.</summary>
public static readonly BindableProperty ControlTemplateProperty = BindableProperty.Create(nameof(ControlTemplate), typeof(ControlTemplate), typeof(TemplatedPage), null,
propertyChanged: TemplateUtilities.OnControlTemplateChanged);
/// <include file="../../docs/Microsoft.Maui.Controls/TemplatedPage.xml" path="//Member[@MemberName='ControlTemplate']/Docs/*" />
public ControlTemplate ControlTemplate
{
get { return (ControlTemplate)GetValue(ControlTemplateProperty); }
set { SetValue(ControlTemplateProperty, value); }
}
IList<Element> IControlTemplated.InternalChildren => InternalChildren;
Element IControlTemplated.TemplateRoot { get; set; }
internal override void ComputeConstraintForView(View view)
{
LayoutOptions vOptions = view.VerticalOptions;
LayoutOptions hOptions = view.HorizontalOptions;
var result = LayoutConstraint.None;
if (vOptions.Alignment == LayoutAlignment.Fill)
result |= LayoutConstraint.VerticallyFixed;
if (hOptions.Alignment == LayoutAlignment.Fill)
result |= LayoutConstraint.HorizontallyFixed;
view.ComputedConstraint = result;
}
internal override void SetChildInheritedBindingContext(Element child, object context)
{
if (ControlTemplate == null)
base.SetChildInheritedBindingContext(child, context);
}
void IControlTemplated.OnControlTemplateChanged(ControlTemplate oldValue, ControlTemplate newValue)
{
OnControlTemplateChanged(oldValue, newValue);
}
internal virtual void OnControlTemplateChanged(ControlTemplate oldValue, ControlTemplate newValue)
{
}
void IControlTemplated.OnApplyTemplate()
{
OnApplyTemplate();
}
protected virtual void OnApplyTemplate()
{
}
protected override void OnChildRemoved(Element child, int oldLogicalIndex)
{
base.OnChildRemoved(child, oldLogicalIndex);
TemplateUtilities.OnChildRemoved(this, child);
}
protected object GetTemplateChild(string name) => TemplateUtilities.GetTemplateChild(this, name);
}
} |