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 字体缩放