diff --git a/demo/Ursa.Demo/Pages/MarqueeDemo.axaml b/demo/Ursa.Demo/Pages/MarqueeDemo.axaml
index 77040f1..244f606 100644
--- a/demo/Ursa.Demo/Pages/MarqueeDemo.axaml
+++ b/demo/Ursa.Demo/Pages/MarqueeDemo.axaml
@@ -10,6 +10,7 @@
mc:Ignorable="d">
+
-
+
diff --git a/src/Ursa/Controls/Marquee/Marquee.cs b/src/Ursa/Controls/Marquee/Marquee.cs
index a09d098..fe3ac51 100644
--- a/src/Ursa/Controls/Marquee/Marquee.cs
+++ b/src/Ursa/Controls/Marquee/Marquee.cs
@@ -1,6 +1,7 @@
using System.Runtime.CompilerServices;
using Avalonia;
using Avalonia.Controls;
+using Avalonia.Controls.Primitives;
using Avalonia.Layout;
using Avalonia.Threading;
using Irihi.Avalonia.Shared.Helpers;
@@ -75,6 +76,10 @@ public class Marquee : ContentControl
_timer.Elapsed -= TimerOnTick;
_timer.Stop();
_timer.Dispose();
+ if (Presenter is not null)
+ {
+ Presenter.SizeChanged -= OnPresenterSizeChanged;
+ }
}
///
@@ -104,6 +109,22 @@ public class Marquee : ContentControl
set => SetValue(SpeedProperty, value);
}
+ protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
+ {
+ base.OnApplyTemplate(e);
+ if (Presenter is not null)
+ {
+ Presenter.SizeChanged+= OnPresenterSizeChanged;
+ }
+ }
+
+ private void OnPresenterSizeChanged(object sender, SizeChangedEventArgs e)
+ {
+ InvalidatePresenterPosition();
+ }
+
+
+
private void TimerOnTick(object sender, System.EventArgs e)
{
var layoutValues = Dispatcher.UIThread.Invoke(GetLayoutValues);