Abd*_*wan 4 lifecycle xamarin.forms
在过去的两个月里,我一直在不知疲倦地寻找一种Page.Loaded在使用 Xamarin.Forms 时实现正确事件的方法,但我无法实现或找到一种方法来实现它。
大多数人建议重写Page.OnAppearing或添加事件处理程序,Page.Appearing这两者都不是答案或实现所需效果的正确方法,并且事件的行为不像真实Page.Loaded事件那样。
我想了解以下信息:
Page.Loaded事件?编辑:
我所说的“适当的Page.Loaded”事件是指:
它必须被调用一次,且仅当页面加载了所有控件、布置它们、初始化它们并首次呈现它们时。
从模态页面返回时不得调用它。
1.为什么不加载数据/ constructor 控件ContentPage?该 constructor 方法仅被调用一次并且在之前也被调用Page.OnAppearing。
我可以从本机端实现它吗?
是的,我想你可以。
在 iOS 中,重写ViewDidLoad自定义渲染器中的方法:
[assembly:ExportRenderer (typeof(ContentPage), typeof(MyPageRenderer))]
namespace App487.iOS
{
public class MyPageRenderer : PageRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
//call before ViewWillAppear and only called once
}
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在Android中,尝试重写该OnAttachedToWindow方法:
[assembly: ExportRenderer(typeof(ContentPage), typeof(MyPageRenderer))]
namespace App487.Droid
{
public class MyPageRenderer : PageRenderer
{
public MyPageRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
}
protected override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9586 次 |
| 最近记录: |