MessagingCentre от MVVM до главной страницы в Xamarin - PullRequest
0 голосов
/ 27 июня 2018

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

В MainPage.xaml.cs я подписываюсь на MessageCentre, ища сообщение «Фокус», которое затем устанавливает фокус формы на элемент управления Entry, называемый txtFirstName.

public MainPage()
    {
        InitializeComponent();
        BindingContext = new ViewModel();

        MessagingCenter.Subscribe<MainPage>(this, "Focus", (sender) => { txtFirstName.Focus(); });
    }

В моей ViewModel команда:

 private void ClearFormCommand(object obj)
{
    FirstName = string.Empty;
    Surname = string.Empty;
    Age = string.Empty;
    AboutMe = string.Empty;

    MessagingCenter.Send<MainPage>(this, "Focus");
}

Однако в строке MessagingCentre.Send имеется ошибка this.

Аргумент 1: невозможно преобразовать из ViewModel в AppName.MainPage

Чем мне нужно заменить this на ВМ, чтобы отправить сообщение на MainPage?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Прежде всего, это внутри MessagingCenter.Send (this, "Focus"); является экземпляром вашей главной страницы. Что касается вашего кода, кажется, что отправка и подписка в порядке.

Внутри конструктора MainPage вы назначаете Bindingcontext экземпляру ViewModel. Этот код здесь подозрительный. Просто отладьте ваш код еще раз и попробуйте выяснить истинную причину или укажите полный код.

Подробнее о Центре сообщений вы можете прочитать здесь .

Надеюсь, это поможет вам. спасибо

0 голосов
/ 27 июня 2018

Замените универсальный <MainPage> на тип вашей модели представления ViewModel (для подписки и отправки вызова)

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