Как и где реализован x:Key в MAUI?

X:Key ведет себя как прикрепленное свойство, если оно доступно в дочерних элементах ResourceDictionary. Однако я не могу найти реализацию x:Key в ResourceDictionary (репо).

Вопрос: Как и где реализован x:Key в MAUI?

Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
2
0
124
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

X:Key наряду с другими атрибутами, входящими в состав пространства имен xmlns:x = "http://schemas.microsoft.com/winfx/2009/xaml", есть специальные XmlNames, которые встроены в парсер XAML; они не реализованы как прикрепленные свойства. По сути, они почти эквивалентны ключевым словам в C#.

Вы можете просмотреть объявления статических переменных для них здесь, внутри структуры XmlName: https://github.com/dotnet/maui/blob/main/src/Controls/src/Xaml/XmlName.cs

Например, статическое поле XmlName «xKey» (x:Key) упоминается здесь в классе XamlParser: https://github.com/dotnet/maui/blob/main/src/Controls/src/Xaml/XamlParser.cs #L261

Аналогичным образом реализованы и другие специальные атрибуты XAML:

X:Arguments, x:DataType, x:FactoryMethod, x:Name, x:TypeArguments.

X:Class и x:FieldModifier также являются частью пространства имен x:, но это особый случай.

Обновлено: следует упомянуть, что если вы хотите создать свой собственный набор расширений, которые ведут себя аналогично, вы можете создать то, что называется Расширение разметки . Хотя вы не можете напрямую добавить в пространство имен x:. x:Static например реализован как расширение разметки: https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Xaml/MarkupExtensions/StaticExtension.cs

Другие вопросы по теме