diff --git a/src/Avalonia.Controls/Primitives/Popup.cs b/src/Avalonia.Controls/Primitives/Popup.cs
index 08ef39947c..ef81d24d06 100644
--- a/src/Avalonia.Controls/Primitives/Popup.cs
+++ b/src/Avalonia.Controls/Primitives/Popup.cs
@@ -150,6 +150,9 @@ namespace Avalonia.Controls.Primitives
public IPopupHost? Host => _openState?.PopupHost;
+ ///
+ /// Gets or sets a hint to the window manager that a shadow should be added to the popup.
+ ///
public bool WindowManagerAddShadowHint
{
get => GetValue(WindowManagerAddShadowHintProperty);
@@ -653,9 +656,9 @@ namespace Avalonia.Controls.Primitives
private static void WindowManagerAddShadowHintChanged(IPopupHost host, bool hint)
{
- if(host is PopupRoot pr && pr.PlatformImpl is not null)
+ if (host is PopupRoot pr)
{
- pr.PlatformImpl.SetWindowManagerAddShadowHint(hint);
+ pr.WindowManagerAddShadowHint = hint;
}
}
diff --git a/src/Avalonia.Controls/Primitives/PopupRoot.cs b/src/Avalonia.Controls/Primitives/PopupRoot.cs
index b41addf855..723bdca1b2 100644
--- a/src/Avalonia.Controls/Primitives/PopupRoot.cs
+++ b/src/Avalonia.Controls/Primitives/PopupRoot.cs
@@ -20,6 +20,12 @@ namespace Avalonia.Controls.Primitives
public static readonly StyledProperty TransformProperty =
AvaloniaProperty.Register(nameof(Transform));
+ ///
+ /// Defines the property.
+ ///
+ public static readonly StyledProperty WindowManagerAddShadowHintProperty =
+ Popup.WindowManagerAddShadowHintProperty.AddOwner();
+
private PopupPositionerParameters _positionerParameters;
///
@@ -50,6 +56,7 @@ namespace Avalonia.Controls.Primitives
: base(impl, dependencyResolver)
{
ParentTopLevel = parent;
+ impl.SetWindowManagerAddShadowHint(WindowManagerAddShadowHint);
}
///
@@ -66,6 +73,15 @@ namespace Avalonia.Controls.Primitives
set => SetValue(TransformProperty, value);
}
+ ///
+ /// Gets or sets a hint to the window manager that a shadow should be added to the popup.
+ ///
+ public bool WindowManagerAddShadowHint
+ {
+ get => GetValue(WindowManagerAddShadowHintProperty);
+ set => SetValue(WindowManagerAddShadowHintProperty, value);
+ }
+
///
/// Gets the parent control in the event route.
///
@@ -179,5 +195,15 @@ namespace Avalonia.Controls.Primitives
{
return new PopupRootAutomationPeer(this);
}
+
+ protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
+ {
+ base.OnPropertyChanged(change);
+
+ if (change.Property == WindowManagerAddShadowHintProperty)
+ {
+ PlatformImpl?.SetWindowManagerAddShadowHint(change.GetNewValue());
+ }
+ }
}
}
diff --git a/src/Avalonia.Controls/ToolTip.cs b/src/Avalonia.Controls/ToolTip.cs
index 8e0ca62131..7f9a155ea5 100644
--- a/src/Avalonia.Controls/ToolTip.cs
+++ b/src/Avalonia.Controls/ToolTip.cs
@@ -304,7 +304,7 @@ namespace Avalonia.Controls
{
if (host is PopupRoot pr)
{
- pr.PlatformImpl?.SetWindowManagerAddShadowHint(hint);
+ pr.WindowManagerAddShadowHint = hint;
}
}