diff options
-rw-r--r-- | Xamarin.Forms.Core.UnitTests/ListViewTests.cs | 37 | ||||
-rw-r--r-- | Xamarin.Forms.Core/ListView.cs | 19 |
2 files changed, 56 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/ListViewTests.cs b/Xamarin.Forms.Core.UnitTests/ListViewTests.cs index d5672f77..b373696a 100644 --- a/Xamarin.Forms.Core.UnitTests/ListViewTests.cs +++ b/Xamarin.Forms.Core.UnitTests/ListViewTests.cs @@ -87,6 +87,43 @@ namespace Xamarin.Forms.Core.UnitTests } [Test] + [Description("Setting BindingContext should trickle down to Header and Footer.")] + public void SettingBindingContextPassesToHeaderAndFooter() + { + var bc = new object(); + var header = new BoxView(); + var footer = new BoxView(); + var listView = new ListView + { + Header = header, + Footer = footer, + BindingContext = bc, + }; + + Assert.That(header.BindingContext, Is.SameAs(bc)); + Assert.That(footer.BindingContext, Is.SameAs(bc)); + } + + [Test] + [Description("Setting Header and Footer should pass BindingContext.")] + public void SettingHeaderFooterPassesBindingContext() + { + var bc = new object(); + var listView = new ListView + { + BindingContext = bc, + }; + + var header = new BoxView(); + var footer = new BoxView(); + listView.Footer = footer; + listView.Header = header; + + Assert.That(header.BindingContext, Is.SameAs(bc)); + Assert.That(footer.BindingContext, Is.SameAs(bc)); + } + + [Test] [Description ("Setting GroupDisplayBinding or GroupHeaderTemplate when the other is set should set the other one to null.")] public void SettingGroupHeaderTemplateSetsDisplayBindingToNull() { diff --git a/Xamarin.Forms.Core/ListView.cs b/Xamarin.Forms.Core/ListView.cs index fa9f738e..dcc13e69 100644 --- a/Xamarin.Forms.Core/ListView.cs +++ b/Xamarin.Forms.Core/ListView.cs @@ -87,6 +87,25 @@ namespace Xamarin.Forms set { SetValue(FooterTemplateProperty, value); } } + protected override void OnBindingContextChanged() + { + base.OnBindingContextChanged(); + + object bc = BindingContext; + + var header = Header as Element; + if (header != null) + { + SetChildInheritedBindingContext(header, bc); + } + + var footer = Footer as Element; + if (footer != null) + { + SetChildInheritedBindingContext(footer, bc); + } + } + public BindingBase GroupDisplayBinding { get { return _groupDisplayBinding; } |