Xamarin Forms MVVM Проверка формы с помощью индикатора занятости - PullRequest
0 голосов
/ 06 июня 2019

Я разработал приложение Xamarin Forms, используя модель MVVMHelpers от Джеймса Монтенагро.Одна из моих страниц - это динамически созданная форма, созданная на основе XML-определения этой формы, загруженной в приложение.Затем приложение создает необходимые макеты и поля.

Когда приходит время для проверки формы, мое приложение проходит через различные элементы управления, созданные на странице, и проверяет входные данные в соответствии с определением формы, чтобы предъявить иск формебыло завершено правильно.Все это прекрасно работает и запускается командой «Сохранить».Проблема в том, что приложение занимает несколько секунд, в течение которых приложение выглядит не отвечающим.

Нет проблем, я подумал, просто добавьте

Acr.Userdialogs.Instance.Loading ("Подтверждение формы, пожалуйста, подождите")

, прежде чем я сделаю свою проверку для отображения индикатора активности,Однако я попробовал это и прочитал об этом, и, конечно, это не работает, так как моя проверка подлинности полностью выполняется в обработчике команд, а пользовательский интерфейс не обновляется.

Затем я попытался переместить свою функцию проверки впоток, использующий

await Task.Run (() => ValidateForm ());

, но это также не работает, поскольку поток должен получить доступ к различным элементам управления пользовательского интерфейса в представлении ине позволено, поскольку это не создавало их.Теперь я застрял.Как я могу отображать индикатор занятости, пока я зацикливаюсь на элементах пользовательского интерфейса, чтобы проверить их - нет смысла собирать все «ответы» из элементов формы в список и проверять их отдельно, поскольку это циклический просмотр элементов управления, которые я предполагаюзанимает время ...

1 Ответ

0 голосов
/ 06 июня 2019

Если вам нужно асинхронно выполнить проверку в потоке пользовательского интерфейса, попробуйте следующее:

Device.BeginInvokeOnMainThread (async() => {
  await ValidateForm();
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...