StackLayout Class

Definition

A Layout that positions child elements in a single line which can be oriented vertically or horizontally.

public ref class StackLayout : Microsoft::Maui::Controls::StackBase, Microsoft::Maui::IStackLayout, System::Collections::Generic::ICollection<Microsoft::Maui::IView ^>, System::Collections::Generic::IEnumerable<Microsoft::Maui::IView ^>, System::Collections::Generic::IList<Microsoft::Maui::IView ^>
public class StackLayout : Microsoft.Maui.Controls.StackBase, Microsoft.Maui.IStackLayout, System.Collections.Generic.ICollection<Microsoft.Maui.IView>, System.Collections.Generic.IEnumerable<Microsoft.Maui.IView>, System.Collections.Generic.IList<Microsoft.Maui.IView>
type StackLayout = class
    inherit StackBase
    interface IStackLayout
    interface ILayout
    interface IView
    interface IElement
    interface ITransform
    interface IContainer
    interface IList<IView>
    interface ICollection<IView>
    interface seq<IView>
    interface IEnumerable
    interface ISafeAreaView
    interface IPadding
Public Class StackLayout
Inherits StackBase
Implements ICollection(Of IView), IEnumerable(Of IView), IList(Of IView), IStackLayout
Inheritance
Implements

Remarks

Because StackLayout layouts override the bounds on their child elements, application developers should not set bounds on them.

The following example code, adapted from the FormsGallery example shows how to create a new StackLayout with children that explore many of the layout behaviors of StackLayout:

StackLayout stackLayout = new StackLayout
{
    Spacing = 0,
    VerticalOptions = LayoutOptions.FillAndExpand,
    Children = 
    {
        new Label
        {
            Text = "StackLayout",
            HorizontalOptions = LayoutOptions.Start
        },
        new Label
        {
            Text = "stacks its children",
            HorizontalOptions = LayoutOptions.Center
        },
        new Label
        {
            Text = "vertically",
            HorizontalOptions = LayoutOptions.End
        },
        new Label
        {
            Text = "by default,",
            HorizontalOptions = LayoutOptions.Center
        },
        new Label
        {
            Text = "but horizontal placement",
            HorizontalOptions = LayoutOptions.Start
        },
        new Label
        {
            Text = "can be controlled with",
            HorizontalOptions = LayoutOptions.Center
        },
        new Label
        {
            Text = "the HorizontalOptions property.",
            HorizontalOptions = LayoutOptions.End
        },
        new Label
        {
            Text = "An Expand option allows one or more children " +
                   "to occupy the an area within the remaining " +
                   "space of the StackLayout after it's been sized " +
                   "to the height of its parent.",
            VerticalOptions = LayoutOptions.CenterAndExpand,
            HorizontalOptions = LayoutOptions.End
        },
        new StackLayout
        {
            Spacing = 0,
            Orientation = StackOrientation.Horizontal,
            Children = 
            {
                new Label
                {
                    Text = "Stacking",
                },
                new Label
                {
                    Text = "can also be",
                    HorizontalOptions = LayoutOptions.CenterAndExpand
                },
                new Label
                {
                    Text = "horizontal.",
                },
            }
        }
    }
};

Constructors

StackLayout()

Fields

_layoutManager (Inherited from Layout)
OrientationProperty

Identifies the Orientation bindable property.

propertyMapper (Inherited from View)

Properties

AnchorX

Gets or sets the X component of the center point for any transform, relative to the bounds of the element. This is a bindable property.

(Inherited from VisualElement)
AnchorY

Gets or sets the Y component of the center point for any transform, relative to the bounds of the element. This is a bindable property.

(Inherited from VisualElement)
AutomationId

Gets or sets a value that allows the automation framework to find and interact with this element.

(Inherited from Element)
Background (Inherited from VisualElement)
BackgroundColor

Gets or sets the color which will fill the background of a VisualElement. This is a bindable property.

(Inherited from VisualElement)
Batched

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from VisualElement)
Behaviors

Gets the list of Behaviors associated to this element. This is a bindable property.

(Inherited from VisualElement)
BindingContext

Gets or sets object that contains the properties that will be targeted by the bound properties that belong to this BindableObject.

(Inherited from BindableObject)
Bounds

Gets the bounds of the element.

(Inherited from VisualElement)
CascadeInputTransparent (Inherited from Layout)
Children

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from Layout)
class (Inherited from NavigableElement)
ClassId

Gets or sets a value used to identify a collection of semantically similar elements.

(Inherited from Element)
Clip (Inherited from VisualElement)
Count (Inherited from Layout)
DesiredSize (Inherited from VisualElement)
DisableLayout

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from VisualElement)
Dispatcher (Inherited from BindableObject)
EffectControlProvider

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from Element)
Effects

A list of the effects that are applied to this item.

(Inherited from Element)
FlowDirection

Gets or sets the layout flow direction.

(Inherited from VisualElement)
Frame (Inherited from VisualElement)
GestureController (Inherited from View)
GestureRecognizers

The collection of gesture recognizers associated with this view.

(Inherited from View)
Handler (Inherited from VisualElement)
Height

Gets the current rendered height of this element. This is a read-only bindable property.

(Inherited from VisualElement)
HeightRequest

Gets or sets the desired height override of this element.

(Inherited from VisualElement)
HorizontalOptions

Gets or sets the LayoutOptions that define how the element gets laid in a layout cycle. This is a bindable property.

(Inherited from View)
Id

Gets a value that can be used to uniquely identify an element through the run of an application.

(Inherited from Element)
IgnoreSafeArea (Inherited from Layout)
InputTransparent

Gets or sets a value indicating whether this element should be involved in the user interaction cycle. This is a bindable property.

(Inherited from VisualElement)
IsClippedToBounds

Gets or sets a value which determines if the Layout should clip its children to its bounds.

(Inherited from Layout)
IsEnabled

Gets or sets a value indicating whether this element is enabled in the user interface. This is a bindable property.

(Inherited from VisualElement)
IsFocused

Gets a value indicating whether this element is focused currently. This is a bindable property.

(Inherited from VisualElement)
IsInPlatformLayout (Inherited from VisualElement)
IsLoaded

Indicates if a VisualElement is connected to the main object tree.

(Inherited from VisualElement)
IsPlatformEnabled

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from VisualElement)
IsPlatformStateConsistent (Inherited from VisualElement)
IsReadOnly (Inherited from Layout)
IsVisible

Gets or sets a value that determines whether this elements should be part of the visual tree or not. This is a bindable property.

(Inherited from VisualElement)
Item[Int32] (Inherited from Layout)
LogicalChildren
Obsolete.

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from Element)
Margin

Gets or sets the margin for the view.

(Inherited from View)
MaximumHeightRequest (Inherited from VisualElement)
MaximumWidthRequest (Inherited from VisualElement)
MinimumHeightRequest

Gets or sets a value which overrides the minimum height the element will request during layout.

(Inherited from VisualElement)
MinimumWidthRequest

Gets or sets a value which overrides the minimum width the element will request during layout.

(Inherited from VisualElement)
Navigation (Inherited from NavigableElement)
NavigationProxy (Inherited from NavigableElement)
Opacity

Gets or sets the opacity value applied to the element when it is rendered. This is a bindable property.

(Inherited from VisualElement)
Orientation

Gets or sets the value which indicates the direction which child elements are positioned.

Padding

Gets or sets the inner padding of the Layout.

(Inherited from Layout)
Parent

Gets or sets the parent element of the element.

(Inherited from Element)
RealParent

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from Element)
Resources

Gets or sets the local resource dictionary.

(Inherited from VisualElement)
Rotation

Gets or sets the rotation (in degrees) about the Z-axis (affine rotation) when the element is rendered.

(Inherited from VisualElement)
RotationX

Gets or sets the rotation (in degrees) about the X-axis (perspective rotation) when the element is rendered.

(Inherited from VisualElement)
RotationY

Gets or sets the rotation (in degrees) about the Y-axis (perspective rotation) when the element is rendered.

(Inherited from VisualElement)
Scale

Gets or sets the scale factor applied to the element.

(Inherited from VisualElement)
ScaleX

Gets or sets a scale value to apply to the X direction.

(Inherited from VisualElement)
ScaleY

Gets or sets a scale value to apply to the Y direction.

(Inherited from VisualElement)
Shadow (Inherited from VisualElement)
Spacing (Inherited from StackBase)
Style (Inherited from NavigableElement)
StyleClass (Inherited from NavigableElement)
StyleId

Gets or sets a user defined value to uniquely identify the element.

(Inherited from Element)
TranslationX

Gets or sets the X translation delta of the element.

(Inherited from VisualElement)
TranslationY

Gets or sets the Y translation delta of the element.

(Inherited from VisualElement)
Triggers

Gets the list of Trigger associated to this element. This is a bindable property.

(Inherited from VisualElement)
VerticalOptions

Gets or sets the LayoutOptions that define how the element gets laid in a layout cycle. This is a bindable property.

(Inherited from View)
Visual (Inherited from VisualElement)
Width

Gets the current rendered width of this element. This is a read-only bindable property.

(Inherited from VisualElement)
WidthRequest

Gets or sets the desired width override of this element.

(Inherited from VisualElement)
Window (Inherited from VisualElement)
X

Gets the current X position of this element. This is a read-only bindable property.

(Inherited from VisualElement)
Y

Gets the current Y position of this element. This is a read-only bindable property.

(Inherited from VisualElement)
ZIndex (Inherited from VisualElement)

Methods

Add(IView) (Inherited from Layout)
ApplyBindings() (Inherited from BindableObject)
Arrange(Rect) (Inherited from VisualElement)
ArrangeOverride(Rect) (Inherited from VisualElement)
BatchBegin()

Signals the start of a batch of changes to the elements properties.

(Inherited from VisualElement)
BatchCommit()

Signals the end of a batch of commands to the element and that those commands should now be committed.

(Inherited from VisualElement)
ChangeVisualState() (Inherited from VisualElement)
Clear() (Inherited from Layout)
ClearValue(BindableProperty)

Clears any value set by SetValue for property.

(Inherited from BindableObject)
ClearValue(BindablePropertyKey)

Clears any value set by SetValue for the property that is identified by propertyKey.

(Inherited from BindableObject)
CoerceValue(BindableProperty) (Inherited from BindableObject)
CoerceValue(BindablePropertyKey) (Inherited from BindableObject)
Contains(IView) (Inherited from Layout)
CopyTo(IView[], Int32) (Inherited from Layout)
CreateLayoutManager()
CrossPlatformArrange(Rect) (Inherited from Layout)
CrossPlatformMeasure(Double, Double) (Inherited from Layout)
EffectIsAttached(String)

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from Element)
FindByName(String)

Returns the element that has the specified name.

(Inherited from Element)
Focus()

Attemps to set focus to this element.

(Inherited from VisualElement)
GetChildElements(Point)

Returns the child elements that are visually beneath the specified point.

(Inherited from View)
GetEnumerator() (Inherited from Layout)
GetRendererOverrides<T>() (Inherited from View)
GetValue(BindableProperty)

Returns the value that is contained in the BindableProperty.

(Inherited from BindableObject)
IndexOf(IView) (Inherited from Layout)
Insert(Int32, IView) (Inherited from Layout)
InvalidateMeasure() (Inherited from VisualElement)
InvalidateMeasureNonVirtual(InvalidationTrigger)

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from VisualElement)
InvalidateMeasureOverride() (Inherited from Layout)
IsSet(BindableProperty)

Returns true if the target property exists and has been set.

(Inherited from BindableObject)
Layout(Rect)

Updates the bounds of the element during the layout cycle.

(Inherited from VisualElement)
Measure(Double, Double, MeasureFlags) (Inherited from Layout)
MeasureOverride(Double, Double) (Inherited from VisualElement)
OnAdd(Int32, IView) (Inherited from Layout)
OnBindingContextChanged() (Inherited from View)
OnChildAdded(Element) (Inherited from VisualElement)
OnChildRemoved(Element, Int32) (Inherited from VisualElement)
OnChildrenReordered() (Inherited from VisualElement)
OnClear() (Inherited from Layout)
OnHandlerChanged() (Inherited from Element)
OnHandlerChanging(HandlerChangingEventArgs) (Inherited from Element)
OnInsert(Int32, IView) (Inherited from Layout)
OnMeasure(Double, Double) (Inherited from VisualElement)
OnParentChanged() (Inherited from Element)
OnParentChanging(ParentChangingEventArgs) (Inherited from Element)
OnParentSet() (Inherited from NavigableElement)
OnPropertyChanged(String) (Inherited from Element)
OnPropertyChanging(String) (Inherited from BindableObject)
OnRemove(Int32, IView) (Inherited from Layout)
OnSizeAllocated(Double, Double) (Inherited from VisualElement)
OnUpdate(Int32, IView, IView) (Inherited from Layout)
PlatformSizeChanged() (Inherited from VisualElement)
Remove(IView) (Inherited from Layout)
RemoveAt(Int32) (Inherited from Layout)
RemoveBinding(BindableProperty)

Removes a previously set binding.

(Inherited from BindableObject)
RemoveDynamicResource(BindableProperty)

Removes a previously set dynamic resource

(Inherited from Element)
SetBinding(BindableProperty, BindingBase)

Assigns a binding to a property.

(Inherited from BindableObject)
SetDynamicResource(BindableProperty, String)

Sets the BindableProperty property of this element to be updated via the DynamicResource with the provided key.

(Inherited from Element)
SetValue(BindableProperty, Object)

Sets the value of the specified property.

(Inherited from BindableObject)
SetValue(BindablePropertyKey, Object)

Sets the value of the propertyKey.

(Inherited from BindableObject)
SetValueCore(BindableProperty, Object, SetValueFlags)

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from BindableObject)
SetValueFromRenderer(BindableProperty, Object)

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from Element)
SetValueFromRenderer(BindablePropertyKey, Object)

For internal use by the Microsoft.Maui.Controls platform.

(Inherited from Element)
SizeAllocated(Double, Double) (Inherited from VisualElement)
UnapplyBindings() (Inherited from BindableObject)
Unfocus()

Unsets focus to this element.

(Inherited from VisualElement)

Events

BatchCommitted (Inherited from VisualElement)
BindingContextChanged (Inherited from BindableObject)
ChildAdded (Inherited from Element)
ChildRemoved (Inherited from Element)
ChildrenReordered (Inherited from VisualElement)
DescendantAdded (Inherited from Element)
DescendantRemoved (Inherited from Element)
FocusChangeRequested (Inherited from VisualElement)
Focused (Inherited from VisualElement)
HandlerChanged (Inherited from Element)
HandlerChanging (Inherited from Element)
Loaded

Occurs when a VisualElement has been constructed and added to the object tree. This event may occur before the VisualElement has been measured so should not be relied on for size information.

(Inherited from VisualElement)
MeasureInvalidated (Inherited from VisualElement)
ParentChanged (Inherited from Element)
ParentChanging (Inherited from Element)
PropertyChanged (Inherited from BindableObject)
PropertyChanging (Inherited from BindableObject)
SizeChanged (Inherited from VisualElement)
Unfocused (Inherited from VisualElement)
Unloaded

Occurs when this VisualElement is no longer connected to the main object tree.

(Inherited from VisualElement)

Explicit Interface Implementations

IBindableLayout.Children (Inherited from Layout)
IContextFlyoutElement.ContextFlyout (Inherited from Element)
IDynamicResourceHandler.SetDynamicResource(BindableProperty, String) (Inherited from BindableObject)
IEffectControlProvider.RegisterEffect(Effect) (Inherited from Element)
IElement.Handler (Inherited from VisualElement)
IElement.Parent (Inherited from Element)
IElementController.Descendants() (Inherited from Element)
IElementController.LogicalChildren (Inherited from Element)
IElementController.SetValueFromRenderer(BindableProperty, Object) (Inherited from Element)
IEnumerable.GetEnumerator() (Inherited from Layout)
IGestureController.CompositeGestureRecognizers (Inherited from View)
IHotReloadableView.Reload() (Inherited from View)
IHotReloadableView.ReloadHandler (Inherited from View)
IHotReloadableView.TransferState(IView) (Inherited from View)
ILayout.ClipsToBounds (Inherited from Layout)
INameScope.RegisterName(String, Object) (Inherited from Element)
INameScope.UnregisterName(String) (Inherited from Element)
IPaddingElement.OnPaddingPropertyChanged(Thickness, Thickness) (Inherited from Layout)
IPaddingElement.PaddingDefaultValueCreator() (Inherited from Layout)
IPropertyMapperView.GetPropertyMapperOverrides() (Inherited from View)
IReplaceableView.ReplacedView (Inherited from View)
IToolTipElement.ToolTip (Inherited from Element)
IView.Arrange(Rect) (Inherited from VisualElement)
IView.Background (Inherited from VisualElement)
IView.Clip (Inherited from VisualElement)
IView.FlowDirection (Inherited from VisualElement)
IView.Height (Inherited from VisualElement)
IView.HorizontalLayoutAlignment (Inherited from View)
IView.InvalidateArrange() (Inherited from VisualElement)
IView.InvalidateMeasure() (Inherited from VisualElement)
IView.IsFocused (Inherited from VisualElement)
IView.Margin (Inherited from View)
IView.MaximumHeight (Inherited from VisualElement)
IView.MaximumWidth (Inherited from VisualElement)
IView.Measure(Double, Double) (Inherited from VisualElement)
IView.MinimumHeight (Inherited from VisualElement)
IView.MinimumWidth (Inherited from VisualElement)
IView.Semantics (Inherited from VisualElement)
IView.Shadow (Inherited from VisualElement)
IView.VerticalLayoutAlignment (Inherited from View)
IView.Visibility (Inherited from VisualElement)
IView.Width (Inherited from VisualElement)
IVisualElementController.EffectiveFlowDirection (Inherited from VisualElement)
IVisualElementController.InvalidateMeasure(InvalidationTrigger) (Inherited from VisualElement)
IVisualTreeElement.GetVisualChildren() (Inherited from Layout)
IVisualTreeElement.GetVisualParent() (Inherited from Element)

Extension Methods

AbortAnimation(IAnimatable, String)

Stops the animation.

Animate(IAnimatable, String, Animation, UInt32, UInt32, Easing, Action<Double,Boolean>, Func<Boolean>)

Sets the specified parameters and starts the animation.

Animate(IAnimatable, String, Action<Double>, Double, Double, UInt32, UInt32, Easing, Action<Double,Boolean>, Func<Boolean>)

Sets the specified parameters and starts the animation.

Animate(IAnimatable, String, Action<Double>, UInt32, UInt32, Easing, Action<Double,Boolean>, Func<Boolean>)

Sets the specified parameters and starts the animation.

Animate<T>(IAnimatable, String, Func<Double,T>, Action<T>, UInt32, UInt32, Easing, Action<T,Boolean>, Func<Boolean>, IAnimationManager)

Sets the specified parameters and starts the animation.

AnimateKinetic(IAnimatable, String, Func<Double,Double,Boolean>, Double, Double, Action, IAnimationManager)

Sets the specified parameters and starts the kinetic animation.

AnimationIsRunning(IAnimatable, String)

Returns a Boolean value that indicates whether or not the animation that is specified by handle is running.

Batch(IAnimatable)
GetPropertyIfSet<T>(BindableObject, BindableProperty, T)
SetAppTheme<T>(BindableObject, BindableProperty, T, T)
SetAppThemeColor(BindableObject, BindableProperty, Color, Color)
SetBinding(BindableObject, BindableProperty, String, BindingMode, IValueConverter, String)

Creates and applies a binding to a property.

FindByName<T>(Element, String)
CancelAnimations(VisualElement)

Aborts all animations (e.g. LayoutTo, TranslateTo, ScaleTo, etc.) on the view element.

FadeTo(VisualElement, Double, UInt32, Easing)

Returns a task that performs the fade that is described by the opacity, length, and easing parameters.

LayoutTo(VisualElement, Rect, UInt32, Easing) Returns a task that eases the bounds of the VisualElement that is specified by the view to the rectangle that is specified by the bounds parameter.
RelRotateTo(VisualElement, Double, UInt32, Easing)

Rotates the VisualElement that is specified by view from its current rotation by drotation.

RelScaleTo(VisualElement, Double, UInt32, Easing)

Returns a task that scales the VisualElement that is specified by view from its current scale to dscale.

RotateTo(VisualElement, Double, UInt32, Easing)

Returns a task that rotates the VisualElement that is specified by view that is described by the rotation, length, and easing parameters.

RotateXTo(VisualElement, Double, UInt32, Easing)

Returns a task that skews the X axis of the the VisualElement that is specified by view by rotation, taking time length and using easing.

RotateYTo(VisualElement, Double, UInt32, Easing)

Returns a task that skews the Y axis of the the VisualElement that is specified by view by rotation, taking time length and using easing.

ScaleTo(VisualElement, Double, UInt32, Easing)

Returns a task that scales the VisualElement that is specified by view to the absolute scale factor scale.

ScaleXTo(VisualElement, Double, UInt32, Easing)

Returns a task that scales the X axis of the the VisualElement that is specified by view to the absolute scale factor scale.

ScaleYTo(VisualElement, Double, UInt32, Easing)

Returns a task that scales the Y axis of the the VisualElement that is specified by view to the absolute scale factor scale.

TranslateTo(VisualElement, Double, Double, UInt32, Easing)

Animates an elements TranslationX and TranslationY properties from their current values to the new values. This ensures that the input layout is in the same position as the visual layout.

HasVisualStateGroups(VisualElement)

Returns true if element has one or more visual state groups associated with it. Otherwise, returns false.

CheckHandlers(IView)
ComputeDesiredSize(IView, Double, Double)
ComputeFrame(IView, Rect)
ToHandler(IElement, IMauiContext)
ToPlatform(IElement, IMauiContext)
ToHandler(IView, IMauiContext)
SetSemanticFocus(IView)
CaptureAsync(IView)
GetVisualElementWindow(IVisualTreeElement)

Gets the Window containing the Visual Tree Element, if the element is contained within one.

GetVisualTreeDescendants(IVisualTreeElement)

Gets the entire hierarchy of descendants as a list of children for a given Visual Tree Element.

GetVisualTreeElements(IVisualTreeElement, Point)

Gets list of a Visual Tree Element's children based off of a given Point.

GetVisualTreeElements(IVisualTreeElement, Rect)

Gets list of a Visual Tree Elements children based off of a rectangle.

GetVisualTreeElements(IVisualTreeElement, Double, Double)

Gets list of a Visual Tree Elements children based off of a given x, y point.

GetVisualTreeElements(IVisualTreeElement, Double, Double, Double, Double)

Gets list of a Visual Tree Elements children based off of a rectangle defined by its coordinates which are specified in platform units, not pixels.

Applies to