在“导航”页面上重复的工具栏项目-WPF(Xamarin表单)

时间:2018-08-03 12:34:04

标签: c# wpf xamarin xamarin.forms

在我的跨平台项目中,我还添加了一个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中的工具栏项。

0 个答案:

没有答案