Я довольно новичок во всем этом и в настоящее время пытаюсь получить высоту вкладок в форме страницы с вкладками Xamarin.Единственное решение, которое я нашел для этого, - написать пользовательский рендерер, и с этим мне тяжело.
После нескольких дней борьбы мне удалось добраться до этого места (надеюсь, направильный путь), однако я просто не могу понять, как подключить XAML к моей странице с вкладками.Это то, что у меня есть.
GameTab.xaml
<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Diplomacy.Views.GameTab"
xmlns:pages="clr-namespace:Diplomacy.Views"
xmlns:custom="clr-namespace:Diplomacy.CustomRenderers">
<!--Pages can be added as references or inline-->
<TabbedPage.Children>
<pages:TabbedMap Title="Map" Icon="tank.png"/>
<pages:TabbedChat Title="Chat" Icon="chat.png"/>
</TabbedPage.Children>
</TabbedPage>
GameTab.xaml.cs
namespace Diplomacy.Views
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class GameTab : Xamarin.Forms.TabbedPage
{
SelectionGamesViewModel viewModel;
public GameTab(SelectionGamesViewModel viewModel)
{
InitializeComponent();
// Disables switching between tabs with the swipe gesture
On<Xamarin.Forms.PlatformConfiguration.Android>().DisableSwipePaging();
// Sets the tab at the bottom in android phones
On<Xamarin.Forms.PlatformConfiguration.Android>().SetToolbarPlacement(ToolbarPlacement.Bottom);
BindingContext = this.viewModel = viewModel;
}
}
MyCustomRenderer.cs
namespace Diplomacy.CustomRenderers
{
public class CustomTabbedPage : Xamarin.Forms.TabbedPage
{
}
}
На этом этапе мой следующий шаг - использовать CustomTabbedPage
(поправьте меня, если я не прав с этого момента).
С этой строкой: xmlns:custom="clr-namespace:Diplomacy.CustomRenderers"
Я смогу втиснуть себя в форму страницы с вкладками Xamarin с помощью своего пользовательского рендера, который в настоящее время ничего не делает.
Способ, которым я верю, что это сделанопутем изменения TabbedPage
на CustomTabbedPage
, как показано ниже
<?xml version="1.0" encoding="utf-8" ?>
<custom:CustomTabbedPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Diplomacy.Views.GameTab"
xmlns:pages="clr-namespace:Diplomacy.Views"
xmlns:custom="clr-namespace:Diplomacy.CustomRenderers">
<!--Pages can be added as references or inline-->
.
. // Same stuff goes here
.
</custom:CustomTabbedPage>
Однако, когда я это делаю, я получаю всевозможные ошибки в GameTab.xaml.cs и 1 ошибку на странице навигации, пытающейся нажатьGameTab (2-я ошибка)
![enter image description here](https://i.stack.imgur.com/PBuI4.png)
Я боролся, наверное, уже несколько недель, мне очень нужна помощь в настройке этого пользовательского рендера,Я получил теорию о том, что он делает и какова его цель, однако я не до конца понимаю, как компилятор все это обрабатывает, и как связать все это вместе.Пожалуйста и спасибо.Извините за длинный вопрос, я просто хотел быть тщательным.
РЕДАКТИРОВАТЬ: Это пользовательский код рендерера Android, который живет в Diplomacy. Android
[assembly: ExportRenderer(typeof(CustomTabbedPage), typeof(MyTabbedPage))]
namespace Diplomacy.Droid.CustomRenderer
{
public class MyTabbedPage : TabbedRenderer
{
public MyTabbedPage(Context context) : base(context)
{
}
}
}