繁体   English   中英

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

[英]How do you show the loading animation for windows phone 8.1 universal store apps?

执行异步功能以获取本地数据,访问文件或调用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;
}

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

在Windows Phone上有一种非常标准化的方法。 由于它是一个通用应用程序,可能最好的选择是显示进度环。

您在XAML中添加它

<ProgressRing IsActive="True"/>

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

我还建议阅读有关进度控制的官方文档,我将以ProgressRing文档中的提示结束此答案, 可以在此处找到

设置IsActive属性以打开或关闭ProgressRing。 如果IsActive为false,则不显示ProgressRing,但在UI布局中为其保留空间。 若要不为ProgressRing保留空间,请将其Visibility属性设置为Collapsed。

提示当ProgressRing处于活动状态时,即使在屏幕上看不到它,例如可见性被折叠时,也会继续进度动画。 这可以使UI线程保持清醒,使用资源并损害应用程序性能。 当ProgressRing不可见时,您应该通过将IsActive设置为false来禁用动画。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM