В чем разница между x: Key и x: Name в WPF? - PullRequest
51 голосов
/ 13 декабря 2010

В чем разница между x:Key и x:Name в WPF?

Я не уверен, в чем истинная разница.

Ответы [ 2 ]

50 голосов
/ 13 декабря 2010

Хотя они используются для аналогичных целей, они не являются взаимозаменяемыми. x: Ключ используется для элементов, которые добавляются в качестве значений в словарь, чаще всего для стилей и других ресурсов, которые добавляются в ResourceDictionary. При установке атрибута x: Key, на самом деле нет соответствующего свойства объекта или даже устанавливаемого присоединенного свойства зависимости. Он просто используется процессором XAML, чтобы знать, какой ключ использовать при вызове Dictionary.Add.

x: Имя немного сложнее. Он используется для применения связанного имени к объекту (обычно объекту, производному от FrameworkElement) в рамках некоторого родительского элемента. Эта область называется «именной областью», и самый простой способ думать об этом - представить UserControl, содержащий <TextBox x:Name="foo" />.

Затем вы можете поместить несколько экземпляров UserControl в окно, не сталкиваясь с именем «foo», поскольку каждый UserControl имеет свою собственную область имен.

Стоит также отметить, что FrameworkElement определяет свойство зависимости с именем Name, которое эквивалентно установке x: Name.

Другое отличие состоит в том, что XAML-конструктор создает элементы в коде для элементов, которые имеют x: Name. Это не относится к объектам, добавляемым в словарь с использованием x: Key.

Дополнительную информацию об этом можно найти в разделе замечаний документации MSDN для директивы x: Name .

21 голосов
/ 13 декабря 2010

x: Ключ действителен только в области действия элемента ResourceDictionary.x: Key используется в качестве основного идентификатора для элементов в ResourceDictionary.

С другой стороны, x: Name допустимо в области действия всего, кроме ResourceDictionary.x: Ключ недопустим вне области ResourceDictionary.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...