Browse Source

make sure member selector is evaluating target value every time select is made

pull/541/head
donandren 10 years ago
parent
commit
92a2f25de4
  1. 2
      src/Markup/Avalonia.Markup.Xaml/Templates/MemberSelector.cs
  2. 17
      tests/Avalonia.Markup.Xaml.UnitTests/Templates/MemberSelectorTests.cs

2
src/Markup/Avalonia.Markup.Xaml/Templates/MemberSelector.cs

@ -51,6 +51,8 @@ namespace Avalonia.Markup.Xaml.Templates
object result = _memberValueNode.CurrentValue.Target; object result = _memberValueNode.CurrentValue.Target;
_expressionNode.Target = null;
if (result == AvaloniaProperty.UnsetValue) if (result == AvaloniaProperty.UnsetValue)
{ {
return null; return null;

17
tests/Avalonia.Markup.Xaml.UnitTests/Templates/MemberSelectorTests.cs

@ -157,6 +157,23 @@ namespace Avalonia.Markup.Xaml.UnitTests.Templates
Assert.Equal(1, selector.Select(data)); Assert.Equal(1, selector.Select(data));
} }
[Fact]
public void Should_Support_Change_Of_Target_Value()
{
var selector = new MemberSelector() { MemberName = "StringValue" };
var data = new Item()
{
StringValue = "Value1"
};
Assert.Same("Value1", selector.Select(data));
data.StringValue = "Value2";
Assert.Same("Value2", selector.Select(data));
}
private class Item private class Item
{ {
public Item Child { get; set; } public Item Child { get; set; }

Loading…
Cancel
Save