#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>
получил это изображение, выполнив «ожидание навигации.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>
- Вы должны использовать ожидающую навигацию.PushAsync(new StartupPage()); вместо
Navigation.PushModalAsync
.
Модальная страница отличается от нажатия на страницу.
Комментарии:
1. проблема в том, что нам не нужна панель навигации вверху, поэтому мы используем только «pushmodalasync», поскольку мы не можем смешивать оба :/
2. Если вы выберете модальный, я думаю, вы не сможете сделать панель вкладок доступной одновременно. Он будет закрывать экран. Если вы не хотите, чтобы панель навигации находилась вверху, вы можете скрыть их.