Атрибут x:FieldModifier
Обновлен: Ноябрь 2007
Изменяет поведение компиляции XAML таким образом, что поля для ссылки на именованные объекты определяются с доступом NonPublic, а не с доступом Public по умолчанию.
Использование атрибута XAML
<object x:FieldModifier="Public".../>
Значения XAML
Public |
Точная строка для указания Public или NonPublic зависит от языка программирования, используемого в коде. См. примечания. |
Зависимости
x:Name также должен быть предоставлен в том же элементе.
Заметки
Значение атрибута x:FieldModifier будет зависеть от языка программирования. Используемая строка будет зависеть от того, как каждый язык реализует свой CodeDomProvider, от преобразователей типов, возвращаемых для определения значений TypeAttributes.Public и TypeAttributes.NonPublic, а также от того, чувствителен ли язык к регистру или нет.
В C# передаваемая строка для назначения Public представляет собой public.
В Microsoft Visual Basic .NET передаваемая строка для назначения Public представляет собой Public.
В C++/CLI целевые объекты C++/CLI в настоящее время не поддерживают компилируемый XAML.
Можно также указать NonPublic (internal в C#, Friend в Microsoft Visual Basic .NET), но это используется редко, так как NonPublic является поведением по умолчанию.
NonPublic используется по умолчанию, так как нередко случается, что коду вне сборки XAML требуется доступ к элементу, созданному XAML. Архитектура безопасности WPF сознательно не создает поля, которые публично хранят экземпляры элементов, если явным образом не установить x:FieldModifier.
x:FieldModifier применяется только для элементов с Атрибут x:Name, поскольку это имя используется для ссылки на открытое поле.
Частичный класс для корневого элемента является открытым по умолчанию, но может быть объявлен закрытым с помощью Атрибут x:ClassModifier. Атрибут x:ClassModifier также влияет на уровень доступа к экземпляру класса корневого элемента. x:Name и x:FieldModifier можно поместить в корневой элемент, но при этом всего лишь создается открытая копия поля корневого элемента, а действительный уровень доступа класса корневого элемента по-прежнему контролируется Атрибут x:ClassModifier.
См. также
Основные понятия
Язык XAML и пользовательские классы