Определение команды в базовой модели просмотра - PullRequest
2 голосов
/ 20 февраля 2020

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

<Button ImageSource="home_footer.png" BackgroundColor="Transparent" HorizontalOptions="FillAndExpand" 
        Command="{TemplateBinding BindingContext.HomeCommand}"/>

Здесь команда выбирается в соответствии с контекстом привязки, т.е. соответствующей моделью представления. Команду нужно писать несколько раз. Я думал о включении команды в базовую модель представления, чтобы ее нужно было записать только один раз. Есть ли вариант для реализации этой опции. Заранее спасибо.

1 Ответ

2 голосов
/ 20 февраля 2020

В вашей BaseViewModel добавьте команду

    public ICommand HomeCommand { get; set; }

В вашей базе ContentPage добавьте привязываемое свойство, которое предоставляет вам эту команду:

   public ICommand Command
    {
        get => (ICommand)GetValue(CommandProperty);
        set => SetValue(CommandProperty, value);
    }

    public object CommandParameter
    {
        get => GetValue(CommandParameterProperty);
        set => SetValue(CommandParameterProperty, value);
    }


    public static readonly BindableProperty CommandProperty = BindableProperty.Create(
        nameof(Command),
        typeof(ICommand),
        typeof(ClassName),
        null
        );

    public static readonly BindableProperty CommandParameterProperty = BindableProperty.Create(
        nameof(CommandParameter),
        typeof(object),
        typeof(ClassName),
        null
        );

Введите команду для этого свойства из ContentPage

<base:CustomContentPage ....
Command="{Binding HomeCommand}">

Установите для вашей кнопки что-то вроде:

Вы можете дать ему лучшее имя для объяснения поведения,

Goodluck!

Не стесняйтесь вернуться, если у вас есть вопросы!

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