Browse Source

Merge pull request #422 from VitalElement/master

supporting null or string.empty to trigger property notifications.
pull/429/head
Steven Kirk 10 years ago
parent
commit
c618b3a433
  1. 2
      src/Markup/Perspex.Markup/Data/Plugins/InpcPropertyAccessorPlugin.cs
  2. 40
      tests/Perspex.Markup.UnitTests/Data/ExpressionObserverTests_Property.cs

2
src/Markup/Perspex.Markup/Data/Plugins/InpcPropertyAccessorPlugin.cs

@ -105,7 +105,7 @@ namespace Perspex.Markup.Data.Plugins
private void PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == _property.Name)
if (e.PropertyName == _property.Name || string.IsNullOrEmpty(e.PropertyName))
{
_changed(Value);
}

40
tests/Perspex.Markup.UnitTests/Data/ExpressionObserverTests_Property.cs

@ -108,6 +108,34 @@ namespace Perspex.Markup.UnitTests.Data
Assert.Equal(0, data.SubscriptionCount);
}
[Fact]
public void Should_Trigger_PropertyChanged_On_Null_Or_Empty_String()
{
var data = new Class1 { Bar = "foo" };
var target = new ExpressionObserver(data, "Bar");
var result = new List<object>();
var sub = target.Subscribe(x => result.Add(x));
Assert.Equal(new[] { "foo" }, result);
data.Bar = "bar";
Assert.Equal(new[] { "foo" }, result);
data.RaisePropertyChanged(string.Empty);
Assert.Equal(new[] { "foo", "bar" }, result);
data.RaisePropertyChanged(null);
Assert.Equal(new[] { "foo", "bar", "bar" }, result);
sub.Dispose();
Assert.Equal(0, data.SubscriptionCount);
}
[Fact]
public void Should_Track_End_Of_Property_Chain_Changing()
{
@ -324,6 +352,13 @@ namespace Perspex.Markup.UnitTests.Data
}
}
private string _bar;
public string Bar
{
get { return _bar; }
set { _bar = value; }
}
public INext Next
{
get { return _next; }
@ -333,6 +368,11 @@ namespace Perspex.Markup.UnitTests.Data
RaisePropertyChanged(nameof(Next));
}
}
public void RaisePropertyChanged(string propertyName)
{
base.RaisePropertyChanged(propertyName);
}
}
private class Class2 : NotifyingBase, INext

Loading…
Cancel
Save