如何为多个页面加载一次视图/控件?

时间:2016-09-07 17:06:06

标签: xamarin xamarin.forms

我为我的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>

它闪烁 - 每次都重新加载整个页面。 有没有办法防止这种情况,只为应用启动时的所有页面加载一次?怎么做?

1 个答案:

答案 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不是为了支持同时渲染同一个视图实例而构建的(这与重用视图不同),它可能根本不能正常工作。所以不要这样做。