Подтвердить что ты не робот

Как вы показываете анимацию загрузки для универсальных приложений для Windows Phone 8.1?

При выполнении функции async для получения локальных данных, доступа к файлу или вызова 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.

ОБНОВЛЕНИЕ ОТ РЕШЕНИЯ

В ответ на 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;
}

Этот код будет работать как на телефоне, так и на планшете.

4b9b3361

Ответ 1

Там довольно стандартизированный способ сделать это на Windows Phone. Поскольку это универсальное приложение, вероятно, лучший выбор - показать кольцо прогресса.

Вы добавляете его в XAML

<ProgressRing IsActive="True"/>

Вы можете показать это либо явно в коде позади, когда нажата кнопка, либо использовать свойство bool в режиме просмотра (если вы используете MVVM) и ValueConverter показать его или скрыть, просто изменив одно свойство с true на false и наоборот.

Я также предлагаю прочитать официальную документацию о контроле за прогрессом, и я закончу этот ответ чаевым от документации ProgressRing, которая можно найти здесь

Установите свойство IsActive, чтобы включить или выключить ProgressRing. Если IsActive является ложным, ProgressRing не отображается, но пространство зарезервировано для него в макете пользовательского интерфейса. Не резервировать место для ProgressRing, установите для свойства Visibility значение Collapsed.

Совет Когда активен ProgressRing, анимация прогресса продолжается даже если его не видно на экране, например, когда оно видимо Рухнул. Это может привести к сбою в работе пользовательского интерфейса, использованию ресурсов и ухудшить производительность приложения. Когда ProgressRing не отображается, вы должен отключить анимацию, установив IsActive в false.