This repository has been archived by the owner on May 1, 2024. It is now read-only.
Add protected Accessor to VisualElement Constructor #12125
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of Change
Updates the constructor of the
VisualElement
frominternal
toprotected internal
. This allows external code to inherit directly from theVisualElement
instead of theView
.The Xamarin Community Toolkit requires access to some of the internal objects of the Xamarin.Forms platform. I am currently working on migrating the Popup Control Pull Request (#9616) to the Xamarin Community Toolkit (xamarin/XamarinCommunityToolkit#292) as I discussed with @PureWeen @jsuarezruiz and @jfversluis the other week. In the original Pull Request (#9616) to Xamarin.Forms @myroot suggested we have the
BasePopup
inherit fromVisualElement
instead ofView
. This would prevent developers from adding theBasePopup
to aStackLayout
since it's children accept a standardView
. This feedback made a lot of sense and we updated that code to supportVisualElement
. Code Review Link.Now that I am actively working on porting this code over to the Xamarin Community Toolkit I am unable to have the
BasePopup
inherit fromVisualElement
. If I try to useElement
instead I am unable to properly implement theIVisualElementRenderer
in the platform specific custom renderers. TheBasePopup
is not aView
so it does not make sense to inherit directly fromView
,I am not aware of the reason why this constructor was made internal, but I think it makes a lot of sense to open it up as I have done in this PR. This will allow developers to build their controls inheriting from
VisualElement
instead ofView
when it makes sense to do so.Related GitHub Issues
Issues Resolved
N/A
API Changes
VisualElement
Changed:
internal VisualElement()
=>protected internal VisualElement()
Platforms Affected
Behavioral/Visual Changes
None
Before/After Screenshots
Not applicable
Testing Procedure
Build still passes
PR Checklist