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