Xamarin не обновляет привязки, когда страница находится в фоновом режиме

#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 достаточная отсрочка исполнения во всех случаях. Вы нашли случай, когда это не так. Важное открытие.