Навигация между страницами внутри вкладки страницы с вкладками, но без потери вкладок страницы вкладки

#android #xaml #xamarin.forms #tabbedpage

#Android #xaml #xamarin.forms #страница с вкладками

Вопрос:

Я работаю над Xamarin.Приложение Forms для iOS и Android (кроссплатформенное)

Я работаю со страницей с вкладками, которая имеет 5 вкладок внизу (пользовательский рендеринг со страницы с вкладками)

Моя проблема в том, что когда я нажимаю другую страницу поверх страницы вкладки, вкладки внизу исчезают.

Есть ли какой-либо способ сохранить вкладки видимыми при нажатии на новые страницы?

Ниже код xaml и фотографии:

 <xf:BottomBarPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="qfix.Views.mPage"
             xmlns:local="clr-namespace:qfix.Behaviors"
             xmlns:pg="clr-namespace:qfix.Views"
             xmlns:controls="clr-namespace:qfix.CustomRenders;assembly=qfix"
             xmlns:xf="clr-namespace:BottomBar.XamarinForms;assembly=BottomBar.XamarinForms"
                  >
    <ContentPage Title="Home" IconImageSource="home.png"  BackgroundImageSource="background.jpg" />
    <ContentPage Title="Category" IconImageSource="category.jpg"   BackgroundImageSource="background.jpg">
        <ContentPage.Content>
            <pg:categories/>
        </ContentPage.Content>
        
    </ContentPage>
    <ContentPage Title="Request" IconImageSource="plus.png" BackgroundImageSource="background.jpg" >
        <StackLayout Spacing="40" Padding="25">
            <Image Source="logo.png" Aspect="AspectFit" HeightRequest="100"></Image>
            <local:DateTimePicker2></local:DateTimePicker2>
            <StackLayout Spacing="10">
                <Label Text="שם היישוב בו נדרש השירות:" VerticalOptions="End" FontSize="Medium"/>
                <controls:EntryAddress TextColor="Black" WidthRequest="300" x:Name="Address"  PlaceholderText="כתובת" BorderWidth="10"  BorderColor="CadetBlue"></controls:EntryAddress>
            </StackLayout >
            <StackLayout Spacing="10">
                <Label Text="מתי ניתן להתקשר אליך?" VerticalOptions="End" FontSize="Medium"/>
                <controls:MyPicker x:Name="Time_picker" Title="עכשוי"   SelectedItem="Phone_List_ItemSelected" BorderColor="CadetBlue" BorderWidth="10"  >
                    <controls:MyPicker.ItemsSource >
                        <x:Array Type="{x:Type x:String}">
                            <x:String>בעוד שעה</x:String>
                            <x:String>מחר בבוקר-8:00</x:String>
                            <x:String>מחר בבוקר-9:00</x:String>
                            <x:String>מחר אח"צ-13:00</x:String>
                            <x:String>מחר אח"צ-14:00</x:String>
                            <x:String>מחר בערב-20:00</x:String>
                            <x:String>מחר בערב-21:00</x:String>
                            
                        </x:Array>
                    </controls:MyPicker.ItemsSource>
                </controls:MyPicker>
            </StackLayout>
 
            <StackLayout Spacing="10">
                <Label Text="מהו סוג העבודה הנדרשת?" VerticalOptions="End" FontSize="Medium"/>
                <controls:MyEntry  x:Name="kindOfWork" Placeholder="סוג העבודה"  FontSize="20" BorderColor="CadetBlue"  BorderWidth="10"></controls:MyEntry>
            </StackLayout>
            <StackLayout BackgroundColor="#a2D5C6" Opacity="0.3" VerticalOptions="EndAndExpand">
                <Button Text="הגש בקשה"    BorderColor="CadetBlue" BackgroundColor="LightSkyBlue" Clicked="Button_Clicked"  TextColor="Black" FontSize="Large"  ></Button>
            </StackLayout>
        </StackLayout>
    </ContentPage>
    <ContentPage Title="Profile" IconImageSource="profile.png" BackgroundImageSource="background.jpg"/>
    <ContentPage Title="settings" IconImageSource="setting.png" BackgroundImageSource="background.jpg"/>
    
</xf:BottomBarPage>
 

вот страница на вкладке, есть список с 2 фотографиями, после синхронизации он переходит на другую страницу (фото ниже после этого)

получил это изображение, выполнив «ожидание навигации.PushModalAsync(new StartupPage());»

Ответ №1:

1. Вы должны деформировать свой ContentPage с NavigationPage подобным:

 <NavigationPage Title="Home">
    <x:Arguments>
        <ContentPage Title="Home" IconImageSource="home.png"  BackgroundImageSource="background.jpg" />
    </x:Arguments>
</NavigationPage>

<NavigationPage Title="Home">
    <x:Arguments>
        <ContentPage Title="Category" IconImageSource="category.jpg"   BackgroundImageSource="background.jpg">
            <ContentPage.Content>
                <pg:categories/>
            </ContentPage.Content>
        </ContentPage>
    </x:Arguments>
</NavigationPage>
 
  1. Вы должны использовать ожидающую навигацию.PushAsync(new StartupPage()); вместо Navigation.PushModalAsync .

Модальная страница отличается от нажатия на страницу.

Комментарии:

1. проблема в том, что нам не нужна панель навигации вверху, поэтому мы используем только «pushmodalasync», поскольку мы не можем смешивать оба :/

2. Если вы выберете модальный, я думаю, вы не сможете сделать панель вкладок доступной одновременно. Он будет закрывать экран. Если вы не хотите, чтобы панель навигации находилась вверху, вы можете скрыть их.