Как сделать так, чтобы панель инструментов отображалась только на определенных страницах - PullRequest
0 голосов
/ 16 сентября 2018

Вы сможете сказать из кода ниже, что текущие визуальные эффекты приложения будут выглядеть примерно так:

Элемент новой панели инструментов вверху и страницы с вкладками ниже.И независимо от того, какую страницу я вкладываю, панель инструментов по-прежнему остается сверху.Я хочу, чтобы панель инструментов была видна только на первой странице.Это вообще возможно?Я не могу вставить внутрь StackLayout.

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:Test_101"
             x:Class="Test_101.MainPage">
    <ContentPage Title="Main">
        <ContentPage.ToolbarItems>
            <ToolbarItem Text="New" Order="Primary"/>
        </ContentPage.ToolbarItems>
        <StackLayout>
            <SearchBar Placeholder="Search..." TextChanged="SearchBar_OnTextChanged"/>
            <ListView x:Name="ListView" IsPullToRefreshEnabled="True" Refreshing="ListView_OnRefreshing">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <TextCell Text="{Binding FName}" Detail="{Binding Skill, StringFormat='Skill: {0}'}"/>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </StackLayout>
    </ContentPage>
    <local:Tryouts Title="Tryouts"/>
    <local:Credits Title="Credits"/>
</TabbedPage>

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вы не можете установить панель инструментов как скрытую напрямую. Так как contentPage находится в RootViewController, а Xamarin.forms не предоставляют такой метод.

Итак, я предлагаю вам создать Custom Renderers. Затем установите это свойство в iOS и Android. О том, как использовать Custom Renderers, вы можете обратиться по ссылке: ЗДЕСЬ

Например

в iOS:

...
using xxx;(your forms's namespace)
using xxx.iOS;
...
[assembly: ExportRenderer(typeof(Tryouts),typeof(Tryouts_iOS))]
namespace xxx.iOS
{
    public class Tryouts_iOS:PageRenderer
    {
      public Tryouts_iOS()
      {

      }

      public override void ViewWillAppear(bool animated)
      {
        base.ViewWillAppear(animated);
        NavigationController.NavigationBar.Hidden=true;
      }

      public override void ViewWillDisappear(bool animated)
      {
        base.ViewWillDisappear(animated);
        NavigationController.NavigationBar.Hidden = false;
      }

    }
}
0 голосов
/ 17 сентября 2018

Вы можете удалить те значки, которые вам не нужны на этой странице, с панели инструментов, используя следующие строки кода, добавить это в свой конструктор или метод onResume

int position = 0;     //Add your icon position
ToolbarItems.RemoveAt(position);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...