我为我的Xamarin.Forms应用程序页面创建了一个导航栏:
<?xml version="1.0" encoding="utf-8" ?>
<StackLayout xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyApp.BottomNavView">
<Button Text="Page 1"
Clicked="OnPage1" />
<Button Text="Page 2"
Clicked="OnPage2" />
</StackLayout>
但是当我打开包含它的不同页面时:
<local:BottomNavView></local:BottomNavView>
它闪烁 - 每次都重新加载整个页面。 有没有办法防止这种情况,只为应用启动时的所有页面加载一次?怎么做?
答案 0 :(得分:1)
在Xaml中,这样做
<local:BottomNavView/>
是c#
相当于
new BottomNavView ();
所以每次使用它都会有效创建。
注意:请不要做以下描述的内容
您可以创建一次视图,例如您的Application
ResourceDictionary
...
<Application.ResourceDictionary>
<ResourceDictionary>
<local:BottomNavView x:Key="bottomNavView" />
</ResourceDictionary>
</Application.ResourceDictionary>
然后将其重新用作StaticResource
<ContentView Content="{StaticResource bottomNavView}" />
并且将在视图之间共享相同的对象实例。但由于Xamarin.Forms
不是为了支持同时渲染同一个视图实例而构建的(这与重用视图不同),它可能根本不能正常工作。所以不要这样做。