diff --git a/Perspex.Base/PerspexObject.cs b/Perspex.Base/PerspexObject.cs index 5fb57a7bac..f43bbcd9aa 100644 --- a/Perspex.Base/PerspexObject.cs +++ b/Perspex.Base/PerspexObject.cs @@ -574,6 +574,14 @@ namespace Perspex PriorityValue v; IDescription description = source as IDescription; + if (!this.IsRegistered(property)) + { + throw new InvalidOperationException(string.Format( + "Property '{0}' not registered on '{1}'", + property.Name, + this.GetType())); + } + if (!this.values.TryGetValue(property, out v)) { v = this.CreatePriorityValue(property); diff --git a/Perspex.Controls/TextBlock.cs b/Perspex.Controls/TextBlock.cs index 3ed165e624..7c03c3fdd7 100644 --- a/Perspex.Controls/TextBlock.cs +++ b/Perspex.Controls/TextBlock.cs @@ -17,19 +17,19 @@ namespace Perspex.Controls Border.BackgroundProperty.AddOwner(); public static readonly PerspexProperty FontFamilyProperty = - PerspexProperty.Register("FontFamily", inherits: true); + PerspexProperty.RegisterAttached("FontFamily", inherits: true); public static readonly PerspexProperty FontSizeProperty = - PerspexProperty.Register("FontSize", inherits: true); + PerspexProperty.RegisterAttached("FontSize", inherits: true); public static readonly PerspexProperty FontStyleProperty = - PerspexProperty.Register("FontStyle", inherits: true); + PerspexProperty.RegisterAttached("FontStyle", inherits: true); public static readonly PerspexProperty FontWeightProperty = - PerspexProperty.Register("FontWeight", inherits: true, defaultValue: FontWeight.Normal); + PerspexProperty.RegisterAttached("FontWeight", inherits: true, defaultValue: FontWeight.Normal); public static readonly PerspexProperty ForegroundProperty = - PerspexProperty.Register("Foreground", new SolidColorBrush(0xff000000), inherits: true); + PerspexProperty.RegisterAttached("Foreground", new SolidColorBrush(0xff000000), inherits: true); public static readonly PerspexProperty TextProperty = PerspexProperty.Register("Text"); diff --git a/Tests/Perspex.Base.UnitTests/PerspexObjectTests.cs b/Tests/Perspex.Base.UnitTests/PerspexObjectTests.cs index 4577059964..0ceeaee616 100644 --- a/Tests/Perspex.Base.UnitTests/PerspexObjectTests.cs +++ b/Tests/Perspex.Base.UnitTests/PerspexObjectTests.cs @@ -355,6 +355,17 @@ namespace Perspex.Base.UnitTests Assert.Equal("initial", target.GetValue(Class1.FooProperty)); } + [Fact] + public void Bind_Throws_Exception_For_Unregistered_Property() + { + Class1 target = new Class1(); + + Assert.Throws(() => + { + target.Bind(Class2.BarProperty, Observable.Return("foo")); + }); + } + [Fact] public void Bind_Sets_Subsequent_Value() {