Skip to content

Commit 8c0f893

Browse files
committed
Fix MetroProgressBar does not work inside ControlTemplate
The Ellipse properties aren't calculated in this case, so do this at the OnRenderSizeChanged
1 parent 5c4471c commit 8c0f893

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

src/MahApps.Metro/MahApps.Metro.Shared/Controls/MetroProgressBar.cs

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ static MetroProgressBar()
2828
DefaultStyleKeyProperty.OverrideMetadata(typeof(MetroProgressBar), new FrameworkPropertyMetadata(typeof(MetroProgressBar)));
2929
IsIndeterminateProperty.OverrideMetadata(typeof(MetroProgressBar), new FrameworkPropertyMetadata(OnIsIndeterminateChanged));
3030
}
31-
32-
public MetroProgressBar()
31+
public MetroProgressBar()
3332
{
3433
IsVisibleChanged += VisibleChangedHandler;
3534
}
@@ -304,20 +303,28 @@ private void LoadedHandler(object sender, RoutedEventArgs routedEventArgs)
304303
SizeChangedHandler(null, null);
305304
SizeChanged += SizeChangedHandler;
306305
}
307-
308-
protected override void OnInitialized(EventArgs e)
306+
307+
protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
309308
{
310-
base.OnInitialized(e);
309+
base.OnRenderSizeChanged(sizeInfo);
310+
UpdateEllipseProperties();
311+
}
311312

313+
private void UpdateEllipseProperties()
314+
{
312315
// Update the Ellipse properties to their default values
313316
// only if they haven't been user-set.
314-
if (EllipseDiameter.Equals(0))
315-
{
316-
SetEllipseDiameter(this.ActualSize(true));
317-
}
318-
if (EllipseOffset.Equals(0))
317+
var actualSize = this.ActualSize(true);
318+
if (actualSize > 0)
319319
{
320-
SetEllipseOffset(this.ActualSize(true));
320+
if (EllipseDiameter.Equals(0))
321+
{
322+
SetEllipseDiameter(actualSize);
323+
}
324+
if (EllipseOffset.Equals(0))
325+
{
326+
SetEllipseOffset(actualSize);
327+
}
321328
}
322329
}
323330
}

0 commit comments

Comments
 (0)