| File: TemplatedPage.cs | Web Access |
| Project: src\src\Controls\src\Core\Controls.Core.csproj (Microsoft.Maui.Controls) |
#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() { OnApplyTemplateImpl(); } void OnApplyTemplateImpl() { Handler?.UpdateValue(nameof(IContentView.Content)); } 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); } }