在Xamarin Forms Project中的OnAppearing方法中调用InitializeComponent
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Xamarin Forms Project中的OnAppearing方法中调用InitializeComponent相关的知识,希望对你有一定的参考价值。
是否有任何原因或问题我无法在xamarin表单项目中的页面的OnAppearing函数中调用InitializeComponent方法?我知道我必须只调用一次InitializeComponent来创建实际的页面。但是,如果我检查内容已经创建并按以下方式执行,该怎么办?这是一个糟糕的实施或实践?因为据说基于xaml的应用程序没有这样做,并且总是在页面的构造函数中调用它。
我想这样做的原因如下所示,因为xamarin.forms启动时间在android上运行缓慢,如果你使用Masterdetail页面(我认为相同的选项卡页面),你必须在启动时初始化它,它会导致每个导航页面定义在masterdetail页面中进行初始化,根据你的用户界面需要2-3秒才能获得更高的成本。对此有何想法或经验?
protected override void OnAppearing()
{
if (Content == null)
{
InitializeComponent();
}
}
我不推荐这种方法。来自xamarin文档。
该类的构造函数调用InitializeComponent,然后调用LoadFromXaml方法从PCL中提取XAML文件(或其编译的二进制文件)。 LoadFromXaml初始化XAML文件中定义的所有对象,在父子关系中将它们全部连接在一起,将代码中定义的事件处理程序附加到XAML文件中设置的事件,并将生成的对象树设置为页面的内容。
https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/getting_started_with_xaml/
如果您的表单在Android上太慢,我会启用快速渲染
在主要活动的OnCreate中,在Xamarin.Forms.Init之前添加这行代码
Forms.SetFlags("FastRenderers_Experimental");
https://xamarinhelp.com/xamarin-forms-fastrenderers-android/
尝试使用已编译的Xaml也没有什么坏处
using Xamarin.Forms.Xaml;
...
[XamlCompilation (XamlCompilationOptions.Compile)]
public class HomePage : ContentPage
{
https://developer.xamarin.com/guides/xamarin-forms/xaml/xamlc/
以上是关于在Xamarin Forms Project中的OnAppearing方法中调用InitializeComponent的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms - 我的主应用程序文件应该命名为“App.cs”还是“name_of_project.cs”?
图像控件未在 WinRT 8.1 Xamarin.Forms(便携式)项目中呈现
如何从解决方案中的文件加载 XML 文件,使用嵌入式资源构建?项目 > 跨平台 > Xamarin.Forms