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


Директива x:FieldModifier

Изменяет поведение компиляции XAML таким образом, чтобы поля для именованных ссылок на объекты были определены с TypeAttributes.Public доступом TypeAttributes.NotPublic вместо поведения по умолчанию.

Использование атрибута XAML

<object x:FieldModifier="Public".../>

Значения XAML

Стоимость Description
Открытый Точную строку, передаваемую для указания 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 в настоящее время отсутствуют; следовательно, строка, передаваемая, не определена.

Можно также указать (internalв C#, в Visual Basic), но указать TypeAttributes.NotPublicTypeAttributes.NotPublic необычно, Friend так как NotPublic поведение уже имеет значение по умолчанию.

TypeAttributes.NotPublic — это поведение по умолчанию, так как это нечасто, что код за пределами сборки, скомпилированной XAML, должен иметь доступ к созданному элементу XAML. Архитектура безопасности WPF вместе с поведением компиляции XAML не будет объявлять поля, которые хранят экземпляры элементов как общедоступные, если только вы не задаете для разрешения общедоступного x:FieldModifier доступа.

x:FieldModifierотносится только к элементам с директивой x:Name, так как это имя используется для ссылки на поле после того, как оно является общедоступным.

По умолчанию частичный класс для корневого элемента является общедоступным; однако его можно сделать неопубликованным с помощью директивы x:ClassModifier. Директива x:ClassModifier также влияет на уровень доступа экземпляра корневого класса элементов. Вы можете поместить x:Name как в корневой элемент, так и x:FieldModifier на корневой элемент, но это делает копию открытого поля корневого элемента, при этом уровень доступа к классу корневого элемента по-прежнему управляется директивой x:ClassModifier.

См. также