我的内置ContentPage
空Grid
:
<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
所需的大小,而不是网格所需的整体尺寸。
答案 0 :(得分:2)
您可以使用Xamarin.Forms.VisualElement.Measure方法确定控件的大小请求。
答案 1 :(得分:1)
我使用Opacity=0
与InputTransparent=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>