Do not defer resources with name registration on them #14703
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.
What does the pull request do?
With this ^ code XamlX compiler currently would defer initialization of MyPanel resource until it's resolved first time by its key.
Unfortunately, NameScope registration is active only while Window itself is initializing, and on top of that deferred resources always use nested child name scopes. Resulting in a situation, when MyPanel resource will never get into Window namescope.
One possible solution would be to extend deferred initialization to our name scopes, but I don't see any benefits of spending time on that. As named controls are more often than less accessed at some point, and there is no point to defer something that will be executed anyway. While most of our theme resources might not be used ever during application lifetime.
So, simpler and more straightforward solution is to disable deferring, if resource is candidate to be registered in the namescope.
Note: Avalonia still doesn't support any type of objects registered in the namescope, but only these with INamed interface on them. See: #6276. But stuff like Panel should be fine.
Checklist
Fixed issues
Fixes #14693