diff --git a/src/Perspex.Base/PerspexObjectExtensions.cs b/src/Perspex.Base/PerspexObjectExtensions.cs
index c40266b4f6..69484abc4c 100644
--- a/src/Perspex.Base/PerspexObjectExtensions.cs
+++ b/src/Perspex.Base/PerspexObjectExtensions.cs
@@ -14,6 +14,24 @@ namespace Perspex
///
public static class PerspexObjectExtensions
{
+ ///
+ /// Subscribes to a property changed notifications for changes that originate from a
+ /// .
+ ///
+ /// The type of the property change sender.
+ /// The property changed observable.
+ ///
+ /// The method to call. The parameters are the sender and the event args.
+ ///
+ /// A disposable that can be used to terminate the subscription.
+ public static IDisposable AddClassHandler(
+ this IObservable observable,
+ Action action)
+ where TTarget : PerspexObject
+ {
+ return observable.Subscribe(e => action((TTarget)e.Sender, e));
+ }
+
///
/// Subscribes to a property changed notifications for changes that originate from a
/// .
diff --git a/src/Perspex.Controls/Window.cs b/src/Perspex.Controls/Window.cs
index 3f7fde81d1..970f4fc60c 100644
--- a/src/Perspex.Controls/Window.cs
+++ b/src/Perspex.Controls/Window.cs
@@ -66,7 +66,7 @@ namespace Perspex.Controls
static Window()
{
BackgroundProperty.OverrideDefaultValue(typeof(Window), Brushes.White);
- TitleProperty.Changed.AddClassHandler(x => x.TitleChanged);
+ TitleProperty.Changed.AddClassHandler((s, e) => s.PlatformImpl.SetTitle((string)e.NewValue));
}
///
@@ -235,10 +235,5 @@ namespace Perspex.Controls
base.HandleResized(clientSize);
}
-
- private void TitleChanged(PerspexPropertyChangedEventArgs e)
- {
- this.PlatformImpl.SetTitle((string)e.NewValue);
- }
}
}