【发布时间】:2016-11-28 17:59:37
【问题描述】:
I have a page with a list of items and when some is selected, the ActivityIndicator turns on and goes to another page, turning off.当我在这个新页面中并单击 NavigationPage 上的 BackButton 时,我返回到带有项目列表的页面,但问题是 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>
【问题讨论】:
-
是否有可能您在
EnvolvidoDetalhe页面或 ViewModel 中的某个位置设置了IsBusy = true;,并且在用户点击后退按钮之前您从未将其设置回false?我建议要么在EnvolvidoDetalhe.OnDisappearing()中设置IsBusy = false;,要么在ResultadosBuscados.OnAppearing()的顶部进行设置。这能解决吗?如果是这样,请找出您将IsBusy设置为true的位置,而不是将其设置回false -
@hvaughan3 默认为假!在其他不使用 ListView 和 OnItemSelected 的页面上,它工作得很好!我可以正常前进和后退。问题只是在 OnItemSelected 中发生!单击 BackButton 后我尝试调试,但页面 ResultadosBuscados 假设默认设置为 isbusy = false。
-
我不确定
IsBusy在您更改页面时是否会重置,或者无论您转到哪个页面,IsBusy是否保持相同的值。您是否尝试在ResultadosBuscados.OnAppearing()中将IsBusy设置为false?实际阅读IsBusy的评论,它说“一次在多个页面上将 IsBusy 设置为 true 将导致全局活动指示器运行,直到两者都设置回 false。作者的工作是在清理之前取消设置 IsBusy 标志上一页。” -
我的
ActivityIndicators 也总是像这样绑定IsVisible:<ActivityIndicator IsVisible="{Binding IsBusy}" IsRunning="{Binding IsBusy}" Color ="#F4B400"/> -
@hvaughan3 我做到了! IsVisible="{Binding IsBusy}" IsRunning="{Binding IsBusy}" 但不起作用。另外,.OnAppearing() 是谁?
标签: c# xaml xamarin xamarin.forms activity-indicator