У меня есть страница со списком элементов, и когда некоторые из них выбраны, ActivityIndicator включается и переходит на другую страницу, выключаясь. Когда я нахожусь на этой новой странице и нажимаю кнопку «Назад» на NavigationPage, я возвращаюсь на страницу со списком элементов, но проблема в том, что ActivityIndicator включен (сохраняется). Как я могу это исправить?
[Страница списка]
public partial class ResultadosBuscados : ContentPage
{
public ResultadosBuscados(IEnumerable dadosPesquisados)
{
IsBusy = false;
InitializeComponent();
BindingContext = this;
ListaBuscados.ItemsSource = dadosPesquisados;
}
public void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
IsBusy = true;
stackActivity.IsVisible = true;
Envolvido envolvSelec = (Envolvido)e.SelectedItem;
if (envolvSelec == null)
return;
IsBusy = false;
stackActivity.IsVisible = false;
this.Navigation.PushAsync(new EnvolvidoDetalhe(envolvSelec));
this.ListaBuscados.SelectedItem = null;
}
}
[часть кода XAML]
<StackLayout x:Name="stackActivity" IsVisible="False" Padding="12"
AbsoluteLayout.LayoutFlags="PositionProportional"
AbsoluteLayout.LayoutBounds="0.5,0.5,-1,-1">
<Frame Padding="50" OutlineColor="Black" HasShadow="true" AbsoluteLayout.LayoutFlags="PositionProportional" Opacity="0.8" BackgroundColor="Black" VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand">
<StackLayout>
<ActivityIndicator IsRunning="{Binding IsBusy}" Color ="#F4B400"/>
<Label Text="Aguarde..." TextColor="#F4B400"/>
</StackLayout>
</Frame>
</StackLayout>
IsBusy = true;
где-то на своейEnvolvidoDetalhe
странице или в ее ViewModel, и вы никогда не устанавливали его обратно наfalse
до того, как пользователь нажмет кнопку «Назад»? Я бы предложил либо установитьIsBusy = false;
вEnvolvidoDetalhe.OnDisappearing()
, либо сделать это в верхней частиResultadosBuscados.OnAppearing()
. Это исправит? Если это так, выясните, где вы устанавливаетеIsBusy
наtrue
, а не устанавливаете обратно наfalse
. - person hvaughan3   schedule 28.11.2016IsBusy
при смене страницы или остается лиIsBusy
одним и тем же значением независимо от того, на какую страницу вы переходите. Вы пытались установитьIsBusy
наfalse
вResultadosBuscados.OnAppearing()
? На самом деле, читая примечания к комментариямIsBusy
, он говорит, что установка IsBusy в true на нескольких страницах одновременно приведет к тому, что индикатор глобальной активности будет работать до тех пор, пока оба не будут установлены обратно в false. Задача авторов — снять флаг IsBusy перед очисткой страницы. - person hvaughan3   schedule 28.11.2016ActivityIndicator
также всегда связываютIsVisible
вот так:<ActivityIndicator IsVisible="{Binding IsBusy}" IsRunning="{Binding IsBusy}" Color ="#F4B400"/>
- person hvaughan3   schedule 28.11.2016OnAppearing()
- person hvaughan3   schedule 30.11.2016