Директива x:Namex:Name Directive

Однозначно определяет элементы, определенные в XAML, в области имен XAML.Uniquely identifies XAML-defined elements in a XAML namescope. Области видимости имен XAML и их уникальность моделей могут применяться к экземпляры объектов, при платформы предоставляют интерфейсы API или реализации поведений, которые обращаются к графа объекта XAML во время выполнения.XAML namescopes and their uniqueness models can be applied to the instantiated objects, when frameworks provide APIs or implement behaviors that access the XAML-created object graph at run time.

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

<object x:Name="XAMLNameValue".../>  

Значения XAMLXAML Values

XAMLNameValue Строку, которая соответствует ограничениям Грамматика XamlName.A string that conforms to the restrictions of the XamlName Grammar.

ПримечанияRemarks

После x:Name применяется к платформу в резервном модель программирования, имя эквивалентен переменной, содержащей ссылку на объект или экземпляр, возвращаемый конструктор.After x:Name is applied to a framework's backing programming model, the name is equivalent to the variable that holds an object reference or an instance as returned by a constructor.

Значение x:Name директиву использования должно быть уникальным в пределах области видимости имен XAML.The value of an x:Name directive usage must be unique within a XAML namescope. По умолчанию при использовании API служб XAML .NET Framework, в основной области имен XAML определяется в корневом элементе XAML из одной рабочей среды XAML и включает в себя элементы, содержащиеся в производственные XAML.By default when used by .NET Framework XAML Services API, the primary XAML namescope is defined at the XAML root element of a single XAML production, and encompasses the elements that are contained in that XAML production. Дополнительные дискретных областей имен XAML, могут происходить в одной рабочей среды XAML могут определяться платформами для конкретных сценариев.Additional discrete XAML namescopes that might occur within a single XAML production can be defined by frameworks to address specific scenarios. Например в WPF новые области видимости имен XAML определяются и любой шаблон, заданного на производственные XAML.For example, in WPF, new XAML namescopes are defined and created by any template that is also defined on that XAML production. Дополнительные сведения об области видимости имен XAML (записанных для WPF, но относится к многие понятия области видимости имен XAML), см. в разделе области видимости имен XAML WPF.For more information about XAML namescopes (written for WPF but relevant for many XAML namescope concepts), see WPF XAML Namescopes.

В общем случае x:Name не следует применять в ситуациях, которые также используют x:Key.In general, x:Name should not be applied in situations that also use x:Key. Реализации XAML конкретными платформами существующих была введена концепция подстановки между x:Key и x:Name, но это не рекомендуется.XAML implementations by specific existing frameworks have introduced substitution concepts between x:Key and x:Name, but that is not a recommended practice. При обработке имени и ключа сведения, такие как служб XAML .NET framework не поддерживает такие концепции, подстановка INameScope или DictionaryKeyPropertyAttribute..NET Framework XAML Services does not support such substitution concepts when handling name/key information such as INameScope or DictionaryKeyPropertyAttribute.

Правила разрешения атрибута x:Name а также принудительное применение уникальность имени потенциально определяются конкретными реализациями платформ.Rules for permittance of x:Name as well as the name uniqueness enforcement are potentially defined by specific implementing frameworks. Тем не менее, для использования со службами XAML .NET Framework, framework определения уникальности области видимости имен XAML должно быть согласовано с определения INameScope сведения в этой документации и следует использовать те же правила, касающиеся where сведения о применении.However, to be usable with .NET Framework XAML Services, the framework definitions of XAML namescope uniqueness should be consistent with the definition of INameScope information in this documentation, and should use the same rules regarding where the information is applied. Например Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) реализации которой различные элементы разметки в отдельные NameScope диапазоны, например словари ресурсов, логическое дерево, созданные XAML на уровне страницы, шаблоны и другие отложенного содержимого и затем применяет XAML уникальность имени в каждой из этих областей видимости имен XAML.For example, the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) implementation divides various markup elements into separate NameScope ranges, such as resource dictionaries, the logical tree created by the page-level XAML, templates, and other deferred content, and then enforces XAML name uniqueness within each of those XAML namescopes.

Для пользовательских типов, использующих средства записи объектов XAML служб XAML платформы .NET, свойства, сопоставляется x:Name на тип можно установить или изменить.For custom types that use .NET Framework XAML Services XAML object writers, a property that maps to x:Name on a type can be established or changed. Это поведение определяется, ссылаясь на имя свойства для сопоставления с RuntimeNamePropertyAttribute в код определение типа.You define this behavior by referencing the name of the property to map with the RuntimeNamePropertyAttribute in the type definition code. RuntimeNamePropertyAttribute Представляет атрибут уровня типа.RuntimeNamePropertyAttribute is a type-level attribute.

Службы XAML структуры Using.NET, логика резервного поддержку области имен XAML можно определить как нейтральные к домену framework путем реализации INameScope интерфейс.Using.NET Framework XAML Services, the backing logic for XAML namescope support can be defined in a framework-neutral way by implementing the INameScope interface.

Примечания об использовании WPFWPF Usage Notes

В разделе стандартную конфигурацию сборки для WPFWPF приложения, использующего XAML, разделяемые классы и кода программной части указанного x:Name становится имя поля, который создается в базовом код при XAMLXAML обрабатывается разметки задачи сборки для компиляции и это поле содержит ссылку на объект.Under the standard build configuration for a WPFWPF application that uses XAML, partial classes, and code-behind, the specified x:Name becomes the name of a field that is created in the underlying code when XAMLXAML is processed by a markup compilation build task, and that field holds a reference to the object. По умолчанию созданное поле является внутренним.By default, the created field is internal. Доступ к полям можно изменить, указав x: FieldModifier-атрибут.You can change field access by specifying the x:FieldModifier attribute. В WPF и Silverlight последовательность является определяет компиляции разметки и имена полей в разделяемый класс, но значение изначально пуста.In WPF and Silverlight, the sequence is that the markup compile defines and names the field in a partial class, but the value is initially empty. Затем созданный метод с именем InitializeComponent вызывается из конструктора класса.Then, a generated method named InitializeComponent is called from within the class constructor. InitializeComponent состоит из FindName вызывает с использованием всех x:Name значения, которые существуют в XAML определенные части разделяемого класса, как входных строк.InitializeComponent consists of FindName calls using each of the x:Name values that exist in the XAML-defined part of the partial class as input strings. Возвращаемые значения затем присваивается ссылка на поле с таким же именем для заполнения значения полей с объектами, которые были созданы из XAML синтаксического анализа.The return values are then assigned to the like-named field reference to fill the field values with objects that were created from XAML parsing. Выполнение InitializeComponent позволяет использовать ссылку, используя граф объекта время выполнения x:Name / имени поля напрямую, вместо того чтобы вызывать FindName явным образом в любое время требуется ссылка на объект определен в XAML.The execution of InitializeComponent make it possible to reference the run time object graph using the x:Name / field name directly, rather than having to call FindName explicitly any time you need a reference to a XAML-defined object.

Для WPF предназначен для приложения, использующего Microsoft Visual Basic и включает файлы XAML с Page действия построения, отдельное свойство ссылки создается во время компиляции, который добавляет WithEvents ключевое слово, чтобы все элементы, имеющие x:Name, для поддержки Handles синтаксиса для делегатов обработчиков событий.For a WPF application that uses the Microsoft Visual Basic targets and includes XAML files with Page build action, a separate reference property is created during compilation that adds the WithEvents keyword to all elements that have an x:Name, to support Handles syntax for event handler delegates. Это свойство всегда является открытым.This property is always public. Дополнительные сведения см. в разделе Обработка событий в Visual Basic и WPF.For more information, see Visual Basic and WPF Event Handling.

x:Name используется обработчиком XAML WPF для регистрации имени в области видимости имен XAML во время загрузки, даже в тех случаях, когда страницы не скомпилированного с разметкой действиями сборки (например, Свободный XAML для словаря ресурсов).x:Name is used by the WPF XAML processor to register a name into a XAML namescope at load time, even for cases where the page is not markup-compiled by build actions (for example, loose XAML of a resource dictionary). Одна из причин такое поведение обусловлено тем, x:Name могут потребоваться для ElementName привязки.One reason for this behavior is because the x:Name is potentially needed for ElementName binding. Дополнительные сведения см. в разделе Общие сведения о привязке данных.For details, see Data Binding Overview.

Как упоминалось ранее, x:Name (или Name) не следует применять в ситуациях, которые также используют x:Key.As mentioned previously, x:Name (or Name) should not be applied in situations that also use x:Key. WPFWPF ResourceDictionary Характеризуется определенным поведением при определении самого в качестве области видимости имен XAML, но возврат не реализован или значения null для INameScope API как способ для обеспечения такого поведения.The WPFWPF ResourceDictionary has a special behavior of defining itself as a XAML namescope but returning Not Implemented or null values for INameScope APIs as a way to enforce this behavior. Если средство синтаксического анализа XAML WPF обнаруживает Name или x:Name в определяемых XAML ResourceDictionary, имя не добавляется к любой области видимости имен XAML.If the WPF XAML parser encounters Name or x:Name in a XAML-defined ResourceDictionary, the name is not added to any XAML namescope. Предпринимается попытка найти это имя из любой области видимости имен XAML и FindName методы не возвращают достоверные результаты.Attempting to find that name from any XAML namescope and the FindName methods will not return valid results.

x: Name и имяx:Name and Name

Многие сценарии приложений WPF можно избежать использования этой x:Name атрибут, так как Name свойства зависимостей, как указано в используемом по умолчанию пространство имен XAML для нескольких важных базовых классов такие как FrameworkElement и FrameworkContentElement удовлетворяет этой же цели.Many WPF application scenarios can avoid any use of the x:Name attribute, because the Name dependency property as specified in the default XAML namespace for several of the important base classes such as FrameworkElement and FrameworkContentElement satisfies this same purpose. По-прежнему существует несколько распространенных сценариев XAML и WPF когда код доступа к элементу, не имеющий Name свойства на уровне платформы важен.There are still some common XAML and WPF scenarios where code access to an element with no Name property at the framework level is important. Например, не поддерживают определенные классы поддержки анимации и раскадровки Name свойство, но они часто требуется ссылаться в коде, чтобы управлять анимацией.For example, certain animation and storyboard support classes do not support a Name property, but they often need to be referenced in code in order to control the animation. Следует указать x:Name как атрибут шкал времени и преобразований, созданных в XAML, если планируется ссылаться на них из кода более поздней версии.You should specify x:Name as an attribute on timelines and transforms that are created in XAML, if you intend to reference them from code later.

Если Name доступен как свойство к классу, Name и x:Name можно взаимозаменяемо использовать в качестве атрибутов, но приведет к исключения синтаксического анализа, если они указаны одновременно для одного элемента.If Name is available as a property on the class, Name and x:Name can be used interchangeably as attributes, but a parse exception will result if both are specified on the same element. При компиляции разметки XAML исключение произойдет при компиляции разметки, в противном случае происходит во время загрузки.If the XAML is markup compiled, the exception will occur on the markup compile, otherwise it occurs on load.

Name можно задать с помощью синтаксиса атрибутов XAML и в коде с помощью SetValue; тем не менее этот параметр Name свойства в коде не приводит к созданию действительная ссылка на поле в пределах области видимости имен XAML в большинстве случаев, где уже XAML загрузить.Name can be set using XAML attribute syntax, and in code using SetValue; note however that setting the Name property in code does not create the representative field reference within the XAML namescope in most circumstances where the XAML is already loaded. Не пытается задать Name в коде используйте NameScope методы из кода для области соответствующих имен.Instead of attempting to set Name in code, use NameScope methods from code, against the appropriate namescope.

Name также можно задать с помощью синтаксиса элемента свойства с внутренним текстом, но это редко.Name can also be set using property element syntax with inner text, but that is uncommon. Напротив x:Name нельзя установить в синтаксис элемента свойства XAML или в коде с помощью SetValue; он может устанавливаться только с помощью синтаксиса атрибутов для объектов, так как он является директивой.In contrast, x:Name cannot be set in XAML property element syntax, or in code using SetValue; it can only be set using attribute syntax on objects because it is a directive.

Примечания об использовании SilverlightSilverlight Usage Notes

x:Name для Silverlight описывается отдельно.x:Name for Silverlight is documented separately. Дополнительные сведения см. в разделе пространства имен XAML (x:) Возможности языка (Silverlight).For more information, see XAML Namespace (x:) Language Features (Silverlight).

См. такжеSee also