Поделиться через


Директива 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.

См. также