Я разрабатываю приложение с Xamarin Forms и Prism. Я использую Zebra SDK для использования оборудования сканера штрих-кода. Я перехватываю событие сканирования штрих-кода с помощью MessagingCenter, у меня есть объявление Send в MainActivity.cs:
Xamarin.Forms.MessagingCenter.Send<App, string>(_my_application, "Barcode", data.Data);
и я получаю отсканированные данные в ViewModels с подпиской:
Xamarin.Forms.MessagingCenter.Subscribe<App, string>(this, "Barcode", (sender, arg) =>
{
...
}
Теперь мне нужно остановить сканер штрих-кода в случае функциональных ошибок. Я обычно показываю всплывающее сообщение:
_pageDialogService.DisplayAlertAsync("Barcode Scanner", "My message", "OK");
и я хочу снова включить сканер после того, как пользователь коснется кнопки «ОК». (Я хочу, чтобы это сообщение блокировалось) Как я могу это сделать? Проблема в том, что мой код сканера штрих-кода находится в MainActivity, и я не знаю, как я могу остановить и возобновить работу сканера штрих-кода из кода ViewModel. Всплывающего сообщения недостаточно, так как сканер запускается аппаратной кнопкой.