Browse Source

Make Popup.IsOpen a direct property.

This fixes Menu and DropDown.
Steven Kirk 10 years ago
parent
commit
b1b5dd5ba2
1 changed files with 7 additions and 10 deletions
  1. 7 10
      src/Perspex.Controls/Primitives/Popup.cs

+ 7 - 10
src/Perspex.Controls/Primitives/Popup.cs

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