StackLayout 不遵守 Xamarin.Forms 中的 VerticalOptions 属性

StackLayout not obeying VerticalOptions property in Xamarin.Forms

我正在尝试创建一个简单的堆栈布局 UI。 这里是 XAML.

    <ContentView>
        <StackLayout
            BackgroundColor="Green"
            HeightRequest="500"
            VerticalOptions="End">
            <StackLayout
                BackgroundColor="LightSkyBlue"
                HeightRequest="100"
                VerticalOptions="End">
                <!--  // ADD CONTROLS HERE[!  -->
            </StackLayout>
        </StackLayout>
    </ContentView>

理想情况下,'blue' stacklayout 应该在底部对齐绿色的布局但是,它不会移动并保持在顶部。

我做错了什么? 请指点我正确的方向

为了更清楚起见附上图片。

根据我的经验,StackLayout 永远不会服从垂直或水平选项。它只会根据需要使用尽可能多的 space 。您可以在 StackLayout 中放置一个透明 BoxView 并将其 VerticalOptions 设置为 FillAndExpand。这将强制 StackLayout 使用所有 space.

我通常使用 Grid 代替并使用 <RowDefinition Height="*"/> 强制它使用所有 space.

您需要将blue Stack Layout 的Vertical Option 设置为EndAndExpand。因为堆栈布局子项不会自动填充。如果你愿意,你需要强迫它。详细解释可以看这个回答here

您只需将您的代码替换为以下代码:

<StackLayout
        BackgroundColor="Green"
        HeightRequest="500"
        VerticalOptions="End">
        <StackLayout
            BackgroundColor="LightSkyBlue"
            HeightRequest="100"
            VerticalOptions="EndAndExpand">
            <!--  // ADD CONTROLS HERE[!  -->
        </StackLayout>
    </StackLayout>

希望对您有所帮助

谢谢