如何显示Windows Phone 8.1通用商店应用程序的加载动画?

时间:2014-05-25 15:25:59

标签: c# windows-8.1 windows-phone-8.1 win-universal-app

当执行异步功能来获取本地数据,访问文件或调用API时,如何在这个可能长的例程中触发加载动画?

以下是一个例子:

<Button onClick="Button_Click" />

public async void Button_Click(object sender, RoutedEventArgs e)
{
    var myData = await MyDataManager.GetMyData();
    await new MessageDiaglog("Data Loaded!").ShowAsync();
}

由于它是一个通用商店应用程序,我认为它应该在Windows 8.1和Windows Phone 8.1中都一样。

从解决方案更新

Per igrali回答,我更新了我的代码以供将来参考:

<ProgressBar x:Name="LoadingBar" Visibility="Collapsed" IsEnabled="False" IsIndeterminate="true" Height="4" HorizontalAlignment="Stretch"/>
<Button onClick="Button_Click" />

public async void Button_Click(object sender, RoutedEventArgs e)
{
    LoadingBar.IsEnabled = true;
    LoadingBar.Visibility = Visibility.Visible;
    var myData = await MyDataManager.GetMyData();
    await new MessageDiaglog("Data Loaded!").ShowAsync();
    LoadingBar.IsEnabled = false;
    LoadingBar.Visibility = Visibility.Collapsed;
}

此代码适用于手机和平板电脑。

1 个答案:

答案 0 :(得分:26)

在Windows Phone上执行此操作非常标准化。由于它是一款通用应用,可能最好的选择是显示进度响铃。

您可以在XAML

中添加它
<ProgressRing IsActive="True"/>

您可以在单击按钮时在代码中显式显示它,或者在视图模型中使用bool属性(如果您使用MVVM)和ValueConverter来显示它或通过简单地更改一个属性来隐藏它是真是假,反之亦然。

我还建议您阅读官方文档about progress controls,我将以ProgressRing文档中的提示结束此回答can be found here

  

设置IsActive属性以打开或关闭ProgressRing。如果   IsActive是假的,ProgressRing没有显示,但空间是   在UI布局中为它保留。不为此预留空间   ProgressRing,将其Visibility属性设置为Collapsed。

     

提示当ProgressRing处于活动状态时,将继续进度动画   即使它在屏幕上不可见,例如它的可见性   崩溃了。这可以保持UI线程清醒,使用资源和   损害应用性能。当ProgressRing不可见时,你   应该通过将IsActive设置为false来禁用动画。