ProgressBar

Show determinate progress with bindable fill and native track styling.

ProgressBar displays determinate progress from zero through one.

var progress = new ProgressBar
{
    FillColor = Colors.Blue,
    TrackColor = Colors.Gray5,
    Progress = Bind(vm => vm.Progress)
};

Feed Progress a normalized value: 0 is empty, 0.5 is halfway, and 1 is complete. Convert byte counts or completed-item counts in the view model:

Progress = totalBytes == 0
    ? 0
    : (double)downloadedBytes / totalBytes;

FillColor is the active color; TrackColor sets the color for the remaining track. Leaving them unset uses the native appearance.

Use ActivityIndicator when progress cannot be measured. If a task can move backwards or restart, accompany the bar with status text so the change does not look like a rendering error.

See ActivityIndicator for indeterminate work and Button.IsLoading for work owned by one action.