Содержание
Часто, при выполнении каких-либо длительных операций приложением, мы видим индикацию прогресса выполнения операции. В .NET MAUI для индикации прогресса могут использоваться компоненты ActivityIndicator или ProgressBar.
ActivityIndicator
Элемент ActivityIndicator отображает анимацию, чтобы показать, что приложение выполняет какое-либо длительное действие. Это довольно простой элемент у которого определены всего два свойства:
| Свойство | Тип | Описание |
Color |
Color |
Цвет индикатора |
IsRunning |
bool |
Указывает активен ли индикатор в данный момент |
Создадим новое приложение .NET MAUI и изменим код XAML страницы MainPage.xaml следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiApp7.MainPage">
<VerticalStackLayout>
<ActivityIndicator Color="Red" IsRunning="True"/>
</VerticalStackLayout>
</ContentPage>
Теперь можно запустить приложение и посмотреть на результат:
ProgressBar
В отличие от ActivityIndicator, ProgressBar позволяет показать текущий ход выполнения длительной операции в диапазона значений от 0 до 1. Этот элемент предоставляет нам следующие свойства:
| Свойство | Тип | Описание |
Progress |
double |
Текущее значение прогресса. Значение от 0 до 1. Все значения больше 1 округляются до 1, все значения меньше нуля — округляются до 0. |
ProgressColor |
Color |
Цвет полосы прогресса |
И так как мы уже изучили такие элементы управления, как кнопки, то продемонстрируем работу ProgressBar на следующем примере. Изменим XAML-код страницы MainPage.xaml:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiApp7.MainPage">
<VerticalStackLayout>
<Button Text="Start" Clicked="Button_Clicked" WidthRequest="100" HorizontalOptions="Center"/>
<Label x:Name="ProgressLabel"/>
<ProgressBar ProgressColor="Red" Progress="0" x:Name="MyProgress"/>
</VerticalStackLayout>
</ContentPage>
Теперь изменим файл отдельного кода MainPage.xaml.cs, добавив в него обработчик события Clicked кнопки:
private async void Button_Clicked(object sender, EventArgs e)
{
MyProgress.Progress = 0;
while (MyProgress.Progress < 1)
{
MyProgress.Progress += 0.1;
ProgressLabel.Text = $"Прогресс {Math.Round(MyProgress.Progress * 100)}%";;
MyProgress.ProgressColor = Color.FromRgb(1, MyProgress.Progress, 0);
await Task.Delay(1000);
}
}
В обработчике мы наращиваем значение Progress у нашего элемента ProgressBar, а также изменяем его цвет в зависимости от прогресса. То есть по ходу работы цикла цвет ProgressBar изменяется от красного до желтого.
Итого
Элементы ActivityIndicator и ProgressBar в .NET MAUI используются для визуализации длительных процессов, выполняемых приложением. При этом ActivityIndicator используется для показа обычной анимации, например, когда точное значение прогресса невозможно определить. В свою очередь, ProgressBar может использоваться для индикации прогресса, чтобы показывать точное числовое значение прогресса в диапазоне от 0 до 1.


