Xamarin Forms Shell - 一次加载每个选项卡 - 急切加载而不是延迟加载

Posted

技术标签:

【中文标题】Xamarin Forms Shell - 一次加载每个选项卡 - 急切加载而不是延迟加载【英文标题】:Xamarin Forms Shell - load each tab all at once - eager load instead of lazy load 【发布时间】:2019-02-11 19:22:10 【问题描述】:

在 Xamarin Forms 中,我过去使用 TabbedPage 来制作选项卡,并且每个选项卡都会一次加载,因此当您从一个选项卡切换到另一个选项卡时,它已经加载了。

现在在一个新应用程序中,我正在尝试 Xamarin 4.0 中的新 Shell。我的两个选项卡中有一个网络浏览器,但在您单击选项卡之前它不会开始尝试加载页面。是否可以一次加载 shell 中的所有选项卡?

【问题讨论】:

我在 Xamarin forms v4.0.0.8055-pre1 中测试它,这是正常的。但是 webview 将在第一个 Tab 中缓慢加载。您的 xamarin 表单版本是什么?你的代码中是否使用了 CSS 样式,如果使用了,就会产生这种效果。 【参考方案1】:

我正在发布我提出的实际问题的答案,但是,请参阅底部的免责声明。

Xamrin Forms 4.0 预览版,急切加载页面使用以下代码:

<ShellSection  x:Name="SpotlightShellSection"  Title="Spotlight" Icon="tab_feed.png">
            <ShellContent Title="Stats" >
                <local:StatsPage/>
            </ShellContent>
            <ShellContent Title="Upcoming" >
                <local:UpcomingPage/>
            </ShellContent>
            <ShellContent Title="ByMonth" >
                <local:ByMonthPage/>
            </ShellContent>
            <ShellContent Title="Stats2" >
                <local:StatsPage/>
            </ShellContent>
        </ShellSection>

要延迟加载,请使用如下代码:

    <ShellSection  x:Name="SpotlightShellSection"  Title="Spotlight" Icon="tab_feed.png">
<ShellContent Title="Stats" Content="" ContentTemplate="DataTemplate local:Spotlight.StatsPage" />
<ShellContent Title="Upcoming" ContentTemplate="DataTemplate local:Spotlight.UpcomingPage"  />
<ShellContent ContentTemplate="DataTemplate local:Spotlight.ByMonthPage" />
</ShellSection>

警告,这是我的问题,WebViews 的内容不一定会仅在 android 中保持加载。在 ios 中,webviews 会按预期保持其内容。

【讨论】:

以上是关于Xamarin Forms Shell - 一次加载每个选项卡 - 急切加载而不是延迟加载的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms.Shell:如何获取底部 TabBar 高度?

在 Xamarin.Forms Shell 中隐藏 tabbedPage 的标题

xamarin.forms.shell 框架中页面上视觉元素的生命周期

Xamarin.Forms 选中时禁用 Shell TabBar 字体缩放

Xamarin.Forms Shell 将数据传递到弹出项视图

Xamarin.Forms webview 进行身份验证,导航到新页面(Shell)并需要再次重新验证?