C# 在Xamarin表单中加载页面时显示文本
我有一个页面,这是相当沉重,其加载约1-2秒后点击。在这段时间里,我看到加载页面标题和旧页面内容,这看起来太不负责任了。我只想在新页面加载时显示临时标签,内容如“加载…”或activityindicator,但我不知道如何做到这一点。实现这一目标的更好方法是什么?提前感谢根据您的评论,您只想在从Api加载数据时显示忙指示灯。您没有发布UI,但我希望您了解如何使用以下界面:C# 在Xamarin表单中加载页面时显示文本,c#,xamarin,xamarin.forms,user-experience,C#,Xamarin,Xamarin.forms,User Experience,我有一个页面,这是相当沉重,其加载约1-2秒后点击。在这段时间里,我看到加载页面标题和旧页面内容,这看起来太不负责任了。我只想在新页面加载时显示临时标签,内容如“加载…”或activityindicator,但我不知道如何做到这一点。实现这一目标的更好方法是什么?提前感谢根据您的评论,您只想在从Api加载数据时显示忙指示灯。您没有发布UI,但我希望您了解如何使用以下界面: <Grid> <YOUR-UI> ..... ....
<Grid>
<YOUR-UI>
.....
.........
</YOUR-UI>
<ActivityIndicator VerticalOptions="Center" IsVisible="{Binding IsBusy}" IsRunning="{Binding IsBusy}"/>
</Grid>
然后,在调用API加载数据时,执行以下操作:
public async void LoadDataFromApi()
{
IsBusy=true; //Show the Indicator
var response= await YourService.Method(); //this is where you calling your api
//do other stuffs if you need to do;
IsBusy=false; //Hide the Indicator
}
如果您还需要帮助,请告诉我。根据您的评论,您只想在从Api加载数据时显示忙指示灯。您没有发布UI,但我希望您了解如何使用以下界面:
<Grid>
<YOUR-UI>
.....
.........
</YOUR-UI>
<ActivityIndicator VerticalOptions="Center" IsVisible="{Binding IsBusy}" IsRunning="{Binding IsBusy}"/>
</Grid>
然后,在调用API加载数据时,执行以下操作:
public async void LoadDataFromApi()
{
IsBusy=true; //Show the Indicator
var response= await YourService.Method(); //this is where you calling your api
//do other stuffs if you need to do;
IsBusy=false; //Hide the Indicator
}
如果您还需要帮助,请告诉我。我有一个Xamarin.Forms高级页面转换项目,可能会对您有所帮助。试试这个:
SpinnerSegue
的DoWork
方法中,添加代码以加载数据Navigiation.PushAsync(new MyNewPage())
替换为new SpinnerSegue().ExecuteAsync(此,new MyNewPage())
我有一个Xamarin.Forms中的高级页面转换项目,可能会对您有所帮助。试试这个:
SpinnerSegue
的DoWork
方法中,添加代码以加载数据Navigiation.PushAsync(new MyNewPage())
替换为new SpinnerSegue().ExecuteAsync(此,new MyNewPage())
根据您对其他答案的评论-而不是ActivityIndicator-您可以使用一个简单的框架来覆盖所有布局,并使其仅在加载数据时可见,即绑定
IsVisible
到IsBusy
属性。然后在执行重载作业之前,将IsBusy
设置为true,然后再将其设置为false,如前面的答案所示
例如,假设您的UI基于网格布局(在本例中为3行/2列):
作为旁注,您根本不使用ViewModel
。我强烈建议您检查什么是ViewModel,以及如何将其与MVVM模式一起使用。从长远来看,使用绑定将使您的生活更加轻松
嗨&快乐编码 根据您对其他答案的评论-而不是ActivityIndicator-您可以使用一个简单的框架来覆盖所有布局,并使其仅在加载数据时可见,即绑定IsVisible
到IsBusy
属性。然后在执行重载作业之前,将IsBusy
设置为true,然后再将其设置为false,如前面的答案所示
例如,假设您的UI基于网格布局(在本例中为3行/2列):
作为旁注,您根本不使用ViewModel
。我强烈建议您检查什么是ViewModel,以及如何将其与MVVM模式一起使用。从长远来看,使用绑定将使您的生活更加轻松
嗨&快乐编码 试试看,这会让您更容易实现加载
例如:
using (this.Dialogs.Loading("Loading text"))
{
//Do something i.e: await Task.Delay(3000);
}
或
或
试试看,它可以让您轻松实现加载
例如:
using (this.Dialogs.Loading("Loading text"))
{
//Do something i.e: await Task.Delay(3000);
}
或
或
请提供完整的详细信息,包括用于导航到其他页面的代码以及在其他页面上执行的代码。帮助我们了解您的问题。因为您所问的特定问题可能需要我们在多个位置检查您的代码。我只是使用Navigiation.PushAsync(new MyNewPage()),其中MyNewPage加载的时间很长(没关系),我希望在加载此页面时显示带标签的预览。您的页面正在从WebService加载数据吗?还是其他重用户界面?它们都是异步的?您正在使用MVVM吗?正在从api(异步)和相当繁重的UI加载数据,是的,我正在使用MVVM。您是否能够找到任何解决方案?请提供完整的详细信息,包括用于导航到其他页面的代码以及在其他加载页面上执行的代码。帮助我们了解您的问题。因为您所问的特定问题可能需要我们在多个位置检查您的代码。我只是使用Navigiation.PushAsync(new MyNewPage()),其中MyNewPage加载的时间很长(没关系),我希望在加载此页面时显示带标签的预览。您的页面正在从WebService加载数据吗?还是其他重用户界面?它们都是异步的?您使用的是MVVM吗?从api(异步)和相当繁重的UI加载数据,是的,我使用的是MVVM。您能找到任何解决方案吗?谢谢您的回答。我的页面上几乎没有图像。加载时间太长(我刚刚检查过)。我想显示标签加载,直到所有的图像将被加载。你知道吗?哦!那么,您想在下载图像时在图像中显示占位符吗?但您说过,您的后端API需要在显示指示器时运行更长时间!我宁愿显示这样的内容,直到所有图像都被加载,@BartekChyży在这种情况下,将活动指示器
替换为标签
,并将其置于中央屏幕。感谢您的回答。我的页面上几乎没有图像。加载时间太长(我刚刚检查过)。我想显示标签加载,直到所有的图像将被加载。你知道吗?哦!那么你呢
using (this.Dialogs.Loading("Loading text"))
{
//Do something i.e: await Task.Delay(3000);
}
this.Dialogs.ShowLoading("Loading text");
//Do something i.e: await Task.Delay(3000);
this.Dialogs.HideLoading();