获取隐藏视图的大小 - Xamarin.Forms

时间:2017-05-23 12:40:56

标签: c# xamarin.forms

我的内置ContentPageGrid

    <Grid
        x:Name="YellowGrid"
        BackgroundColor="Yellow">
        <Label 
            Text="It's a Yellow Grid"
            VerticalOptions="Center"
            HorizontalOptions="Center"
            />
    </Grid>

在重写方法中,我可以得到网格的实际大小:

    protected override void OnSizeAllocated(double width, double height)
    {
        base.OnSizeAllocated(width, height);
        // YellowGrid.Width equals to the width of the screen
    }

那没关系。但是,如果我将设置网格属性IsVisible=false,而不是Width的{​​{1}}等于YellowGrid(这也是逻辑)。但如果隐藏了网格,是否可以获得所需的网格大小?

更新

我接下来试过了:

-1

protected override void OnSizeAllocated(double width, double height) { base.OnSizeAllocated(width, height); var size = YellowGrid.Measure(width, height, MeasureFlags.None); } 的{​​{1}}返回Measure所需的大小,而不是网格所需的整体尺寸。

2 个答案:

答案 0 :(得分:2)

您可以使用Xamarin.Forms.VisualElement.Measure方法确定控件的大小请求。

答案 1 :(得分:1)

我使用Opacity=0InputTransparent=true代替IsVisible=false来获得隐藏网格的相同结果:

<Grid
    x:Name="YellowGrid"
    Opacity="0"
    InputTransparent="True"
    BackgroundColor="Yellow">
    <Label 
        Text="It's a Yellow Grid"
        VerticalOptions="Center"
        HorizontalOptions="Center"
        />
</Grid>