Browse Source

Fix binding to Window.

pull/464/head
Steven Kirk 11 years ago
parent
commit
5d53ec9822
  1. 13
      src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs
  2. 20
      tests/Perspex.Markup.Xaml.UnitTests/Xaml/BindingTests.cs

13
src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs

@ -12,6 +12,8 @@ using Perspex.Platform;
namespace Perspex.Markup.Xaml
{
using Context;
using Controls;
using Data;
using OmniXaml.ObjectAssembler;
/// <summary>
@ -160,11 +162,20 @@ namespace Perspex.Markup.Xaml
private object Load(Stream stream, object rootInstance)
{
return base.Load(stream, new Settings
var result = base.Load(stream, new Settings
{
RootInstance = rootInstance,
InstanceLifeCycleListener = s_lifeCycleListener,
});
var control = result as IControl;
if (control != null)
{
DelayedBinding.ApplyBindings(control);
}
return result;
}
}
}

20
tests/Perspex.Markup.Xaml.UnitTests/Xaml/BindingTests.cs

@ -79,5 +79,25 @@ namespace Perspex.Markup.Xaml.UnitTests.Xaml
Assert.Same(button, ((NonControl)button.Tag).Control);
}
}
[Fact]
public void Binding_To_Window_Works()
{
using (UnitTestApplication.Start(TestServices.StyledWindow))
{
var xaml = @"
<Window xmlns='https://github.com/perspex'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
Title='{Binding Foo}'>
</Window>";
var loader = new PerspexXamlLoader();
var window = (Window)loader.Load(xaml);
window.DataContext = new { Foo = "foo" };
window.ApplyTemplate();
Assert.Equal("foo", window.Title);
}
}
}
}

Loading…
Cancel
Save