Primary WinForms APIs:
ProgressBarTrackBarStatusStrip progress/status indicatorsPrimary Avalonia APIs:
ProgressBarSliderTextBlock and layout containers| WinForms | Avalonia |
|---|---|
ProgressBar.Value/Maximum |
ProgressBar.Value/Maximum |
| indeterminate marquee | ProgressBar.IsIndeterminate="True" |
TrackBar |
Slider |
status text in StatusStrip |
bottom-aligned status region with bindings |
WinForms C#:
var zoom = new TrackBar { Minimum = 50, Maximum = 200, Value = 100 };
zoom.ValueChanged += (_, _) => previewZoomLabel.Text = $"{zoom.Value}%";
var progress = new ProgressBar { Minimum = 0, Maximum = 100, Value = 40 };
Avalonia XAML:
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:MyApp.ViewModels"
x:DataType="vm:ImportViewModel">
<Grid RowDefinitions="Auto,Auto,Auto" RowSpacing="8">
<Slider Grid.Row="0"
Minimum="50"
Maximum="200"
Value="{CompiledBinding ZoomPercent, Mode=TwoWay}" />
<ProgressBar Grid.Row="1"
Minimum="0"
Maximum="100"
Value="{CompiledBinding ProgressValue}" />
<TextBlock Grid.Row="2"
Text="{CompiledBinding StatusText}" />
</Grid>
</UserControl>
using Avalonia.Controls;
var zoom = new Slider
{
Minimum = 50,
Maximum = 200,
Value = viewModel.ZoomPercent
};
var progress = new ProgressBar
{
Minimum = 0,
Maximum = 100,
Value = viewModel.ProgressValue
};
Value in TwoWay mode and keep one canonical source of truth.IsIndeterminate="True" during unknown-duration operations.