XAML 获取.Net maui中父元素的宽度

3zwtqj6y  于 2022-12-07  发布在  .NET
关注(0)|答案(1)|浏览(230)

我正在尝试在.net Maui的VerticalStackLayout中绘制Line。我希望线条从左向右延伸。
有没有办法获得父元素的大小?我尝试了WidthRequest,但没有任何结果,因为它没有设置。

<Line X1="0"
            Y1="0"
            X2="{ Binding Source={RelativeSource TemplatedParent}, Path=WidthRequest}"
            Y2="0"
            StrokeLineCap="Round"
            Stroke="{StaticResource Icon}"
            StrokeThickness="1"
          AbsoluteLayout.LayoutBounds="70,0"
          BackgroundColor="Gray"/>
iqih9akk

iqih9akk1#

问题是,LineVerticalStackLayout中,而VerticalStackLayoutAbsoluteLayout中,这不会向下传递其大小,这意味着HorizontalOptionsVerticalOptionsVerticalStackLayoutMSDN没有影响。

我的解决方案如下:

行位于AbsoluteLayout本身中

<Line X1="0"
        Y1="0"
        X2="0"
        Y2="0"
        StrokeLineCap="Round"
        Stroke="{StaticResource Icon}"
        StrokeThickness="1"

        AbsoluteLayout.LayoutBounds="70,0,1,1"
        AbsoluteLayout.LayoutFlags="WidthProportional"
        BackgroundColor="Gray"/>

AbsoluteLayout.LayoutBounds="70,0,1,1"AbsoluteLayout.LayoutFlags="WidthProportional"的组合使得Line从左向右伸展。

或者行位于VerticalStackLayout中,然后需要使用AbsoluteLayout.LayoutBounds

<VerticalStackLayout BindableLayout.ItemsSource="{Binding Hours}"
                         AbsoluteLayout.LayoutFlags="WidthProportional"
                         AbsoluteLayout.LayoutBounds="0,0,1,1"
                         >

通过AbsoluteLayout.LayoutFlags="WidthProportional"AbsoluteLayout.LayoutBounds="0,0,1,1"的组合,VerticalStackLayout延伸到AbsoluteLayout的宽度。
如果我的控件不是在AbsoluteLayout中,它会像上面注解中所述的Leandro Toloza那样工作。

相关问题