diff --git a/src/Shared/HandyControl_Shared/Controls/Other/Badge.cs b/src/Shared/HandyControl_Shared/Controls/Other/Badge.cs index f34f4628..b745b0ac 100644 --- a/src/Shared/HandyControl_Shared/Controls/Other/Badge.cs +++ b/src/Shared/HandyControl_Shared/Controls/Other/Badge.cs @@ -11,6 +11,8 @@ namespace HandyControl.Controls; /// public class Badge : ContentControl { + private int? _originalValue; + public static readonly RoutedEvent ValueChangedEvent = EventManager.RegisterRoutedEvent("ValueChanged", RoutingStrategy.Bubble, typeof(EventHandler>), typeof(Badge)); @@ -38,13 +40,17 @@ public class Badge : ContentControl var ctl = (Badge) d; var v = (int) e.NewValue; ctl.SetCurrentValue(TextProperty, v <= ctl.Maximum ? v.ToString() : $"{ctl.Maximum}+"); - if (ctl.IsInitialized) + if (ctl.IsLoaded) { ctl.RaiseEvent(new FunctionEventArgs(ValueChangedEvent, ctl) { Info = v }); } + else + { + ctl._originalValue = v; + } } public int Value @@ -97,4 +103,19 @@ public class Badge : ContentControl } protected override Geometry GetLayoutClip(Size layoutSlotSize) => null; + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + if (_originalValue != null) + { + RaiseEvent(new FunctionEventArgs(ValueChangedEvent, this) + { + Info = _originalValue.Value + }); + + _originalValue = null; + } + } }