Progress ring work sort of completed
This commit is contained in:
@@ -7,7 +7,15 @@ namespace TheXamlGuy.UI.Avalonia.Controls
|
||||
public class ProgressRing : RangeBase
|
||||
{
|
||||
public static readonly StyledProperty<bool> IsIndeterminateProperty =
|
||||
AvaloniaProperty.Register<ProgressRing, bool>(nameof(IsIndeterminate), true);
|
||||
AvaloniaProperty.Register<ProgressRing, bool>(nameof(IsIndeterminate), false);
|
||||
|
||||
public static readonly StyledProperty<ProgressRingTemplateSettings> TemplateSettingsProperty =
|
||||
AvaloniaProperty.Register<ProgressRing, ProgressRingTemplateSettings>(nameof(TemplateSettings));
|
||||
|
||||
public ProgressRing()
|
||||
{
|
||||
SetValue(TemplateSettingsProperty, new ProgressRingTemplateSettings());
|
||||
}
|
||||
|
||||
public bool IsIndeterminate
|
||||
{
|
||||
@@ -15,23 +23,40 @@ namespace TheXamlGuy.UI.Avalonia.Controls
|
||||
set => SetValue(IsIndeterminateProperty, value);
|
||||
}
|
||||
|
||||
public ProgressRingTemplateSettings TemplateSettings
|
||||
{
|
||||
get => GetValue(TemplateSettingsProperty);
|
||||
set => SetValue(TemplateSettingsProperty, value);
|
||||
}
|
||||
|
||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs args)
|
||||
{
|
||||
UpdateIsIndeterminate();
|
||||
UpdateValue();
|
||||
}
|
||||
|
||||
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs args)
|
||||
{
|
||||
base.OnPropertyChanged(args);
|
||||
if (args.Property == IsIndeterminateProperty)
|
||||
{
|
||||
UpdateIsIndeterminate();
|
||||
}
|
||||
|
||||
if (args.Property == ValueProperty)
|
||||
{
|
||||
UpdateValue();
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateIsIndeterminate()
|
||||
{
|
||||
PseudoClasses.Set(":indeterminate", IsIndeterminate);
|
||||
|
||||
}
|
||||
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
|
||||
|
||||
private void UpdateValue()
|
||||
{
|
||||
base.OnPropertyChanged(change);
|
||||
if (change.Property == IsIndeterminateProperty)
|
||||
{
|
||||
UpdateIsIndeterminate();
|
||||
}
|
||||
TemplateSettings.SetValue(ProgressRingTemplateSettings.SweepAngleProperty, Value == Maximum ? 360 : 360 * (Value / (Maximum - Minimum)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user