关于NavigationPage作为应用主页的Xamarin.Forms UWP启动问题

时间:2018-01-10 09:14:56

标签: xamarin xamarin.forms

我刚开始使用我的第一款适用于Android,iOS和UWP的Xamarin Forms应用程序,并且已经查看了很多示例和代码以便开始使用。

该应用程序是使用MVVM结构构建的,因为我猜大多数Xamarin.Forms应用程序都是,我目前面临两个问题,我找不到任何答案。 这些问题可能是Xamarin.Forms 101所以我很抱歉,如果这些是"愚蠢"的问题。

App.xaml.cs - > App.MainPage = new NavigationPage(new MainPage())

在App.xaml.cs文件中,我已经根据设备习惯用法定义了应该设置为启动页面的页面。

    Page startupPage = null;
    if (Device.Idiom == TargetIdiom.Phone)
        startupPage = new NavigationPage(new MainPage());
    else
        startupPage = new NavigationPage(new MainPageTablet());
    MainPage = startupPage;

这很好用,但我遇到了一个问题。

OnAppearing()和OnDisappearing()都在启动时被调用

当应用程序启动时,在MainPage.xaml.cs / MainPageTablet.xaml.cs文件中调用OnAppearing()和OnDisappearing()。 这是一个错误,还是应该发生?

删除" NavigationPage"从startupPage的声明开始,只在启动时调用OnAppearing()

    Page startupPage = null;
        if (Device.Idiom == TargetIdiom.Phone)
            startupPage = new MainPage();
        else
            startupPage = new MainPageTablet();
        MainPage = startupPage;

现在启动工作,就像我觉得应该只在启动时调用OnAppearing()。 然而,这现在引入了一些新的问题(?)"。我在MainPage.xaml / MainPageTablet.xaml中的T​​oolbarItem消失了。

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:TestApp.Classes;assembly=TestApp"
             x:Class="TestApp.Views.MainPageTablet">
    <ContentPage.ToolbarItems>
        <ToolbarItem Name="MenuItem1" Order="Secondary" Text="Log out" Command="{Binding LogOutCommand}" Icon="settingsImage.png" />
    </ContentPage.ToolbarItems>
    <ContentPage.Content>
        ....
    </ContentPage.Content>
</ContentPage>

ToolbarItem只能在NavigationPage中使用,还是我必须做的不仅仅是将其添加到它以使其工作?

任何有关此问题的帮助或评论都会非常有用。

由于

1 个答案:

答案 0 :(得分:0)

如果您在移动设备上运行应用程序,则应仅在OnAppearing()启动MainPage()时调用此应用程序。

如果页面设置为导航页面,则仅显示默认导航栏。 因此,当您添加工具栏项时,它将是可见的。但由于您尚未将主页面设置为导航页面,因此不会显示导航栏,因此工具栏项目不可见。