RelativeSource Binding
- fixes#3847
Implement RelativeSource binding modes for Self, TemplatedParent, and FindAncestor. Add unit tests. Pare down TemplateBinding class to use RelativeSource binding mechanism.
* Include RelativeSource member in Binding.Clone
* Fix issue of unit tests being tricked by async in Binding.Apply; permit "Source={RelativeSource...}" in addition to "RelativeSource={RelativeSource..."; allow FindAncestor relative binding source mode to be based on BindingContext type or control type
* Fix unit test wasn't actually testing "Source={RelativeSource...}" syntax.
* Address @StephaneDelcroix's comments. Make FindAncestor relative source binding work even when the ancestor changes.
* Much better mechanism for detecting when a parent changes for relativesource
* Cleanup
* more cleanup
* more cleanup
* Remove async/await for identifying templated parent and ancestor type binding source
* Remove unused code; fix linting
* Update Xamarin.Forms.Core/Binding.cs
Co-Authored-By: Stephane Delcroix <stephane@delcroix.org>
* Update Xamarin.Forms.Core/Binding.cs
Co-Authored-By: Stephane Delcroix <stephane@delcroix.org>
* Update Xamarin.Forms.Core/Binding.cs
Co-Authored-By: Stephane Delcroix <stephane@delcroix.org>
* Update Xamarin.Forms.Core/BindingExpression.cs
Co-Authored-By: Stephane Delcroix <stephane@delcroix.org>
* Update Xamarin.Forms.Core/BindingExpression.cs
Co-Authored-By: Stephane Delcroix <stephane@delcroix.org>
* Update Xamarin.Forms.Core/Binding.cs
Co-Authored-By: Stephane Delcroix <stephane@delcroix.org>
* Ensure TemplateBinding works correctly when reparenting. Cleanup.
* Finish addressing comments; linting cleanup
* Remove private modifier where unneeded