Оболочка Xamarin.Forms TabBar.BindableLayout, похоже, не работает? - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь использовать новый компонент Xamarin.Forms.Shell в моем приложении для отображения динамического c нижнего TabBar, однако при моих попытках он, похоже, игнорирует использование атрибута BindableLayout. Вполне возможно, что я просто использую это неправильно, но я попробовал это несколькими способами.

Я использую Prism MVVM в качестве фреймворка для просмотра моделей. Просмотреть код модели:

public class MainPageShellViewModel : ViewModelBase
{
    public MainPageShellViewModel(INavigationService navigationService)
        : base(navigationService)
    {
        Tabs = new List<AppMenuItem>
        {
            new AppMenuItem
            {
                Title = "Comms Page", Icon = IconFont.MdiNewspaper,
                Page = new DataTemplate(typeof(Comms))
            },
            new AppMenuItem
            {
                Title = "People Page", Icon = IconFont.MdiCalendar,
                Page = new DataTemplate(typeof(People))
            }
        };
    }

    public List<AppMenuItem> Tabs { get; set; }
}

Просмотреть XAML:

<Shell
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:prism="http://prismlibrary.com"
xmlns:pages="clr-namespace:MSS_Prism_Test.Views"        
xmlns:icons="clr-namespace:MSS_Prism_Test"
prism:ViewModelLocator.AutowireViewModel="True"
x:Class="MSS_Prism_Test.Views.MainPageShell">

<TabBar
    BindableLayout.ItemsSource="{Binding Tabs}">
    <BindableLayout.ItemTemplate>
        <DataTemplate>
            <Tab Title="{Binding Title}">
                <Tab.Icon>
                    <FontImageSource FontFamily="{StaticResource MaterialFontFamily}" Glyph="{Binding Icon}"/>
                </Tab.Icon>
                <ShellContent ContentTemplate="{Binding Page}" />
            </Tab>
        </DataTemplate>
    </BindableLayout.ItemTemplate>
</TabBar>

Я также использую значки шрифтов материалов для отображения изображений значков в сочетании с stati c класс для ссылки на правильные шестнадцатеричные значения шрифта в форме IconFont.cs.

По любой причине, если я создаю stati c TabBar с элементами Tab в XAML и заполняю все поля вручную, все работает хорошо. Однако при попытке сделать это динамически с помощью BindableLayout раскладка оболочки вообще не отображается, и все, что я получаю, это белый экран.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...