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