Резюме
x:Name
и AutomationProperties.Name
- две совершенно разные вещи, поэтому вопрос «следует ли мне использовать то или другое» основан на ложной предпосылке: в общем, вы не можете использовать то или другое.
Цель x:Name
- идентифицировать элемент управления WPF в коде программной части, чтобы разработчик мог получить к нему доступ. Он не имеет смысла (или уникален) за пределами класса, моделирующего конкретный элемент WPF.
С другой стороны, цель AutomationProperties.Name
- идентифицировать элемент пользовательского интерфейса в контексте диалога или другого типа окна, которое предоставляется пользователю для взаимодействия. В частности, его значение должно соответствовать тому, что пользователь воспринял бы как «метку» этого элемента пользовательского интерфейса (чтобы, например, инструмент доступности мог информировать пользователя о назначении элемента).
Хотя любой инструмент (например, компилятор XAML) может выбрать использование значения x:Name
для AutomationProperties.Name
, это не означает, что вы должны это делать; ИМХО, это именно тот тип «удобства», который приводит к проблемам, потому что разница между ними скрыта от разработчика, поэтому неизменно одно или другое свойство в конечном итоге будет иметь семантически неправильное значение.
Информация о семантических и технических аспектах каждого объекта недвижимости приводится в следующих разделах.
x: Имя
На странице документации MSDN объясняется, что
После применения x: Name к поддерживающей модели программирования фреймворка имя эквивалентно переменной, которая содержит ссылку на объект или экземпляр, возвращаемый конструктором.
Значение использования директивы x: Name должно быть уникальным в пределах области имен XAML.
[...]
В стандартной конфигурации сборки для приложения WPF, которое использует XAML, частичные классы и код программной части, указанный x: Name становится именем поля, которое создается в базовом коде, когда XAML обрабатывается задачей сборки компиляции разметки, и это поле содержит ссылку на объект.
Из вышесказанного мы можем сказать, что x:Name
:
- используется для доступа к элементу в коде (не XAML), поскольку он контролирует имя поля, содержащего элемент
- должен быть уникальным в пределах области имен XAML (поскольку в коде не может быть двух полей с одинаковым именем )
AutomationProperties.Name
В документации по специальным возможностям WPF объясняется, что
Название элемента автоматизации присваивается разработчиком. Свойство Name всегда должно соответствовать тексту метки на экране. Например, имя должно быть «Обзор…» для элемента кнопки с меткой «Обзор…».
person
Jon
schedule
08.05.2012