在我的跨平台项目中,我还添加了一个WPF项目。我正在使用MasterDetail页面。我有一个名为“设置”的页面。该页面在工具栏上有4个图标。其中一个图标称为“登录”,单击该图标,我们将导航到“登录”页面。
await Navigation.PushAsync(new Login());
在“登录”页面上,工具栏上没有图标。但是在WPF中,“设置”页面的所有图标也都显示在“登录”页面中。我在UWP和Android上进行了测试。在那里工作正常。工具栏项不会重复。但是仅在WPF中会引起问题。
在构造函数中,我检查了工具栏项的计数,它返回0。仍然显示该页面时,它仍包含“设置”页面中的图标。 任何帮助将不胜感激。
这是登录页面的xaml:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TestV2.Views.Login"
Title="">
<ContentPage.Content>
<StackLayout>
....
</StackLayout>
</ContentPage.Content>
</ContentPage>
设置页面:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class=TestV2.Views.SettingsPage"
Title="">
<ContentPage.ToolbarItems>
<ToolbarItem Text="Save" Clicked="btnSaveClicked" Icon="Icon/icon2.png">
</ToolbarItem>
<ToolbarItem Text="Login" Clicked="btnLoginClicked" x:Name="tbLogin" >
</ToolbarItem>
</ContentPage.ToolbarItems>
<ContentPage.Content>
<StackLayout Orientation="Vertical" VerticalOptions="StartAndExpand">
....
</StackLayout>
</ContentPage.Content>
</ContentPage>
列表页:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TestV2.Views.List"
Title="">
<ContentPage.ToolbarItems>
<ToolbarItem Text="Play" Clicked="btnPlayClicked" Icon="Icon/icon3.png" >
</ToolbarItem>
<ToolbarItem Text="Login" Clicked="btnLoginClicked" x:Name="tbLogin" />
</ContentPage.ToolbarItems>
<ContentPage.Content>
<StackLayout Orientation="Vertical" VerticalOptions="StartAndExpand" Margin="0,0,0,10">
....
</StackLayout>
</ContentPage.Content>
</ContentPage>
我还尝试使用代码来清除OnAppearing()中的工具栏项:
ToolbarItems.Clear();
ToolbarItem tbPlay = new ToolbarItem();
tbPlay.Icon = "Icon/iconView.png";
tbPlay.Text = "View";
tbPlay.Clicked += btnPlayClicked;
ToolbarItems.Add(tbPlay);
我在OnAppearing中使用了此代码,因为当我们从“登录”页面单击“返回”时,未调用“初始化”,而仅调用了OnAppearing。但是,它仍然重复WPF中的工具栏项。