我有一些XAML ContentPages,它们上面有ContentView对象。因此,通常我会根据this.Width和this.Height,在ContentPage中设置的值来调整这些对象的大小。但是,如果在ContentPage加载后没有显式调用我的ContentView对象,则Width和Height值为null,因为尚未设置值。
我想弄清楚的是,我怎么能告诉我的ContentViews在获取宽度和高度值之前等到ContentPage完成加载?
答案 0 :(得分:2)
我找到了另一种解决方法,它正在Xamarin Forms 4.8中工作:
private bool isStarted = false;
protected override void LayoutChildren(double x, double y, double width, double height)
{
base.LayoutChildren(x, y, width, height);
if (!isStarted)
{
isStarted = true;
// do something
}
}
答案 1 :(得分:0)
Xamarin.Forms提供了两个生命周期类型的事件:
OnAppearing
OnDisappearing
可以在Page子类中重写。
现在事实上,OnAppearing
将在屏幕出现之前执行,当你想要一个需要在屏幕出现后立即执行的Loaded事件时,有一个解决方法。
private bool _toggleTemp;
public bool ToggleTemp
{
get => _toggleTemp;
set => SetProperty(ref _toggleTemp, value);
}
LoadingVm.ToggleTemp = true;
<Switch IsToggled="{Binding ToggleTemp}" Toggled="Switch_OnToggled" IsVisible="False" />
private async void Switch_OnToggled(object sender, ToggledEventArgs e)
{
/* Your code goes here... */
}
如果您有任何疑问,请告诉我