Browse Source

Add shorthand property AddClassHandler.

Steven Kirk 10 years ago
parent
commit
f08220c599
2 changed files with 19 additions and 6 deletions
  1. 18 0
      src/Perspex.Base/PerspexObjectExtensions.cs
  2. 1 6
      src/Perspex.Controls/Window.cs

+ 18 - 0
src/Perspex.Base/PerspexObjectExtensions.cs

@@ -14,6 +14,24 @@ namespace Perspex
     /// </summary>
     public static class PerspexObjectExtensions
     {
+        /// <summary>
+        /// Subscribes to a property changed notifications for changes that originate from a
+        /// <typeparamref name="TTarget"/>.
+        /// </summary>
+        /// <typeparam name="TTarget">The type of the property change sender.</typeparam>
+        /// <param name="observable">The property changed observable.</param>
+        /// <param name="action">
+        /// The method to call. The parameters are the sender and the event args.
+        /// </param>
+        /// <returns>A disposable that can be used to terminate the subscription.</returns>
+        public static IDisposable AddClassHandler<TTarget>(
+            this IObservable<PerspexPropertyChangedEventArgs> observable,
+            Action<TTarget, PerspexPropertyChangedEventArgs> action)
+            where TTarget : PerspexObject
+        {
+            return observable.Subscribe(e => action((TTarget)e.Sender, e));
+        }
+
         /// <summary>
         /// Subscribes to a property changed notifications for changes that originate from a
         /// <typeparamref name="TTarget"/>.

+ 1 - 6
src/Perspex.Controls/Window.cs

@@ -66,7 +66,7 @@ namespace Perspex.Controls
         static Window()
         {
             BackgroundProperty.OverrideDefaultValue(typeof(Window), Brushes.White);
-            TitleProperty.Changed.AddClassHandler<Window>(x => x.TitleChanged);
+            TitleProperty.Changed.AddClassHandler<Window>((s, e) => s.PlatformImpl.SetTitle((string)e.NewValue));
         }
 
         /// <summary>
@@ -235,10 +235,5 @@ namespace Perspex.Controls
 
             base.HandleResized(clientSize);
         }
-
-        private void TitleChanged(PerspexPropertyChangedEventArgs e)
-        {
-            this.PlatformImpl.SetTitle((string)e.NewValue);
-        }
     }
 }