diff --git a/src/Perspex.Controls/Primitives/Popup.cs b/src/Perspex.Controls/Primitives/Popup.cs
index ae6291aa17..ce409b4256 100644
--- a/src/Perspex.Controls/Primitives/Popup.cs
+++ b/src/Perspex.Controls/Primitives/Popup.cs
@@ -25,7 +25,10 @@ namespace Perspex.Controls.Primitives
/// Defines the property.
///
public static readonly PerspexProperty IsOpenProperty =
- PerspexProperty.Register(nameof(IsOpen));
+ PerspexProperty.RegisterDirect(
+ nameof(IsOpen),
+ o => o.IsOpen,
+ (o, v) => o.IsOpen = v);
///
/// Defines the property.
@@ -45,14 +48,8 @@ namespace Perspex.Controls.Primitives
public static readonly PerspexProperty StaysOpenProperty =
PerspexProperty.Register(nameof(StaysOpen), true);
- ///
- /// The root of the popup.
- ///
+ private bool _isOpen;
private PopupRoot _popupRoot;
-
- ///
- /// The top level control of the Popup's visual tree.
- ///
private TopLevel _topLevel;
///
@@ -108,8 +105,8 @@ namespace Perspex.Controls.Primitives
///
public bool IsOpen
{
- get { return GetValue(IsOpenProperty); }
- set { SetValue(IsOpenProperty, value); }
+ get { return _isOpen; }
+ set { SetAndRaise(IsOpenProperty, ref _isOpen, value); }
}
///