首页 文章

关于NavigationPage作为App MainPage的Xamarin.Forms UWP Startup问题

提问于
浏览
0

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

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

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

在App.xaml.cs文件中,我已经根据Device idiom定义了应该设置为启动页面的页面 .

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() . 这是一个错误,还是应该发生?

从startupPage的声明中删除“NavigationPage”时,仅在启动时调用OnAppearing()

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

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

<?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

    如果您在移动设备上运行您的应用程序,那么只能在启动 MainPage() 时调用 OnAppearing() .

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

相关问题