Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Xamarin表单中加载页面时显示文本_C#_Xamarin_Xamarin.forms_User Experience - Fatal编程技术网

C# 在Xamarin表单中加载页面时显示文本

C# 在Xamarin表单中加载页面时显示文本,c#,xamarin,xamarin.forms,user-experience,C#,Xamarin,Xamarin.forms,User Experience,我有一个页面,这是相当沉重,其加载约1-2秒后点击。在这段时间里,我看到加载页面标题和旧页面内容,这看起来太不负责任了。我只想在新页面加载时显示临时标签,内容如“加载…”或activityindicator,但我不知道如何做到这一点。实现这一目标的更好方法是什么?提前感谢根据您的评论,您只想在从Api加载数据时显示忙指示灯。您没有发布UI,但我希望您了解如何使用以下界面: <Grid> <YOUR-UI> ..... ....

我有一个页面,这是相当沉重,其加载约1-2秒后点击。在这段时间里,我看到加载页面标题和旧页面内容,这看起来太不负责任了。我只想在新页面加载时显示临时标签,内容如“加载…”或activityindicator,但我不知道如何做到这一点。实现这一目标的更好方法是什么?提前感谢

根据您的评论,您只想在从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
}

如果您还需要帮助,请告诉我。

根据您的评论,您只想在从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高级页面转换项目,可能会对您有所帮助。试试这个:

  • 安装此nuget:(它当前仅为预发行版,因此您需要选中该框才能看到它)
  • 将此示例添加到项目中:
  • SpinnerSegue
    DoWork
    方法中,添加代码以加载数据
  • 在导航到另一页的代码中,将
    Navigiation.PushAsync(new MyNewPage())
    替换为
    new SpinnerSegue().ExecuteAsync(此,new MyNewPage())

  • 我有一个Xamarin.Forms中的高级页面转换项目,可能会对您有所帮助。试试这个:

  • 安装此nuget:(它当前仅为预发行版,因此您需要选中该框才能看到它)
  • 将此示例添加到项目中:
  • 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();