Директива 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.
См. также
.NET Desktop feedback