Browse Source

Clear ContentPresenter data context.

When assigning a control to `ContentPresenter.Content` after a
non-control the data context should get cleared. Fixes another problem
in #831.
pull/835/head
Steven Kirk 9 years ago
parent
commit
f73a10b593
  1. 4
      src/Avalonia.Controls/Presenters/ContentPresenter.cs
  2. 16
      tests/Avalonia.Controls.UnitTests/Presenters/ContentPresenterTests.cs

4
src/Avalonia.Controls/Presenters/ContentPresenter.cs

@ -232,6 +232,10 @@ namespace Avalonia.Controls.Presenters
{
DataContext = content;
}
else
{
ClearValue(DataContextProperty);
}
// Update the Child.
if (newChild == null)

16
tests/Avalonia.Controls.UnitTests/Presenters/ContentPresenterTests.cs

@ -171,6 +171,22 @@ namespace Avalonia.Controls.UnitTests.Presenters
Assert.Equal("foo", target.DataContext);
}
[Fact]
public void Assigning_Control_To_Content_After_NonControl_Should_Clear_DataContext()
{
var target = new ContentPresenter();
target.Content = "foo";
target.UpdateChild();
Assert.True(target.IsSet(Control.DataContextProperty));
target.Content = new Border();
target.UpdateChild();
Assert.False(target.IsSet(Control.DataContextProperty));
}
[Fact]
public void Tries_To_Recycle_DataTemplate()
{

Loading…
Cancel
Save