我刚开始使用我的第一款适用于Android,iOS和UWP的Xamarin Forms应用程序,并且已经查看了很多示例和代码以便开始使用。
该应用程序是使用MVVM结构构建的,因为我猜大多数Xamarin.Forms应用程序都是,我目前面临两个问题,我找不到任何答案。 这些问题可能是Xamarin.Forms 101所以我很抱歉,如果这些是"愚蠢"的问题。
在App.xaml.cs文件中,我已经根据设备习惯用法定义了应该设置为启动页面的页面。
Page startupPage = null;
if (Device.Idiom == TargetIdiom.Phone)
startupPage = new NavigationPage(new MainPage());
else
startupPage = new NavigationPage(new MainPageTablet());
MainPage = startupPage;
这很好用,但我遇到了一个问题。
当应用程序启动时,在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中的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中使用,还是我必须做的不仅仅是将其添加到它以使其工作?
任何有关此问题的帮助或评论都会非常有用。
由于
答案 0 :(得分:0)
如果您在移动设备上运行应用程序,则应仅在OnAppearing()
启动MainPage()
时调用此应用程序。
如果页面设置为导航页面,则仅显示默认导航栏。 因此,当您添加工具栏项时,它将是可见的。但由于您尚未将主页面设置为导航页面,因此不会显示导航栏,因此工具栏项目不可见。