#xamarin #xamarin.forms
Вопрос:
У меня есть модель просмотра, привязанная к странице. Модель представления обновляет свойство, реагирующее на событие. Когда страница находится в фоновом режиме (покрыта другими страницами), она не обновляет свой пользовательский интерфейс, даже когда я выполняю код viewmodel в потоке пользовательского интерфейса:
Device.BeginInvokeOnMainThread(() =gt; { MyProperty = false; }
Наблюдая за этим на Android в данный момент. Решено, но мой собственный ответ ниже.
Ответ №1:
Если я добавлю к этому одну строку, это сработает, пользовательский интерфейс страницы будет обновляться в фоновом режиме:
Device.BeginInvokeOnMainThread(async() =gt; { await Task.Delay(10); MyProperty = false; }
Комментарии:
1. Недавно столкнулся с той же проблемой с многоязычным приложением. Страница настроек имела ту же привязку Viewmodel, что и Начальная страница, хотя при изменении языка с помощью команды будет обновлена коллекция ObservableCollection, но не привязки на Начальной странице. Я попробовал новый метод, но безуспешно. Нужно было поместить его в конструктор и запустить стартовую страницу с начала: App.Current. Главная страница = новая начальная страница(); Вы использовали оболочку?
2. да, я использовал оболочку с вкладками, в теории тоже можно быть виноватым..
3. Это довольно интересно. Мне было интересно, была ли
BeginInvoke
достаточная отсрочка исполнения во всех случаях. Вы нашли случай, когда это не так. Важное открытие.