Я пытаюсь использовать потрясающую функциональность Sharpnado для создания так называемых «фиксированных вкладок». Но он не делает то, что я хочу, - и проблема может лежать где-то еще ... В основном, вкладки не реагируют на нажатие. С этим простым примером я сократил его до этого.
Контекст - это приложение, которое использует обычную страницу с вкладками (со страницами навигации для каждой вкладки). На одной из этих вкладок я попытался поместить элемент управления TabHostView
- даже без привязки, как я изначально думал, что это проблема. Это скриншот тестовой страницы: Ничего не происходит, когда я нажимаю на две вкладки ("Personlig" и "Udforsk"). XAML выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:tabs="clr-namespace:Sharpnado.Presentation.Forms.CustomViews.Tabs;assembly=Sharpnado.Presentation.Forms"
xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
ios:Page.UseSafeArea="true"
xmlns:views="clr-namespace:Angler.Views.Partials"
x:Class="Angler.Views.StatisticsPage">
<NavigationPage.TitleView>
<Label Text="{Binding Title}" HorizontalOptions="Center"
VerticalOptions="Center" Style="{StaticResource PageTitle}" />
</NavigationPage.TitleView>
<StackLayout VerticalOptions="FillAndExpand" BackgroundColor="LightYellow">
<Label Text="{Binding ShowSelectedTab}" Margin="20,10" />
<Grid RowSpacing="0" ColumnSpacing="0" Margin="0"
BackgroundColor="LightPink" VerticalOptions="FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height="40" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<tabs:TabHostView ShadowType="Bottom" Grid.Row="0">
<tabs:TabHostView.Tabs>
<tabs:UnderlinedTabItem Label="Personlig" />
<tabs:UnderlinedTabItem Label="Udforsk" IsSelected="True" />
</tabs:TabHostView.Tabs>
</tabs:TabHostView>
</Grid>
</StackLayout>
</ContentPage>
Viewmodel выглядит следующим образом (хотя вышесказанное было сужено, чтобы не использовать свойство для tabindex. Но я также исследовал, был ли контекст привязки для модели представления былХорошо - и, похоже, так):
public class StatisticsPageViewModel : ViewModelBase
{
public int SelectedTabIndex { get; set; }
public string ShowSelectedTab { get { return $"Index: {SelectedTabIndex}"; } }
public StatisticsPageViewModel(INavigationService navigationService, IPageDialogService pageDialogService,
IDeviceService deviceService) : base(navigationService, pageDialogService,
deviceService)
{
Title = AppResources.StatisticsPageTitle;
}
public override void OnAppearing()
{
//SelectedTabIndex = 1;
base.OnAppearing();
Analytics.TrackEvent("Navigate to Statistics");
}
}
Я использую VisualStudio для Mac 8.3.4 (сборка 8), Sharpnado.presentations.forms 1.3.0 и Prism.forms 7.2.0.1367.
Я пытался добавить InputTransparent="True"
к некоторым объектам-контейнерам - безрезультатно.
Любые хорошие идеи относительно того, как решить эту проблему, наиболее ценны!