diff --git a/Perspex.Controls/ProgressBar.cs b/Perspex.Controls/ProgressBar.cs
index 2afbd3bc87..bcc97a4404 100644
--- a/Perspex.Controls/ProgressBar.cs
+++ b/Perspex.Controls/ProgressBar.cs
@@ -15,16 +15,27 @@ namespace Perspex.Controls
///
public class ProgressBar : RangeBase
{
- ///
- protected override Size ArrangeOverride(Size finalSize)
+ static ProgressBar()
{
- var size = base.ArrangeOverride(finalSize);
- var b = this.Bounds;
+ ValueProperty.Changed.AddClassHandler(x => x.ValueChanged);
+ }
- var indicator = this.GetTemplateChild("PART_Indicator");
- indicator.Width = Math.Max(this.Minimum, finalSize.Width * (this.Value / this.Maximum));
+ private Border indicator;
- return size;
+ ///
+ ///
+ protected override void OnTemplateApplied()
+ {
+ this.indicator = this.GetTemplateChild("PART_Indicator");
+ }
+
+ private void ValueChanged(PerspexPropertyChangedEventArgs e)
+ {
+ if (this.indicator != null)
+ {
+ double percent = this.Maximum == this.Minimum ? 1.0 : ((double)e.NewValue - this.Minimum) / (this.Maximum - this.Minimum);
+ this.indicator.Width = this.Bounds.Width * percent;
+ }
}
}
}