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

Я пытаюсь создать динамические вкладки в WPF, и я пытаюсь написать шаблон контента, который будет применяться только к некоторым элементам вкладки. Я хочу иметь возможность создать идентификатор для шаблона контента, чтобы я мог ссылаться на него в коде позади, и чтобы я мог выборочно применять его только к некоторым вкладкам в одном TabControl. Однако я смущен этими тремя различными идентификаторами xaml. В чем разница, и какой из них лучше для моих целей?

2 ответов


' x: 'указывает пространство имен, которое в вашем случае, скорее всего, будет"http://schemas.microsoft.com/winfx/2006/xaml " вы увидите псевдоним, объявленный в верхней части окна.файл XAML. x: Key, x:Name и т. д.-все директивы в этом пространстве имен.

напротив, атрибут "Name" (без x:) является свойством зависимости, объявленным в классе FrameworkElement.

x: Key

однозначно идентифицирует элементы, которые создаются и ссылаются в определяемом XAML словаре. Добавление значения x:Key в элемент объекта XAML является наиболее распространенным способом идентификации ресурса в словаре ресурсов, например в WPF ResourceDictionary.

x: имя

уникально идентифицирует XAML-определенные элементы в области имен XAML. Области имен XAML и их модели уникальности могут быть применены к экземплярам объектов, когда фреймворки предоставляют API или реализуют поведение, связанное с XAML-созданный граф объектов во время выполнения.

x: Uid

предоставляет уникальный идентификатор для элементов разметки. Во многих сценариях этот уникальный идентификатор используется процессами и средствами локализации XAML.

Примечания

Я видел только x: Uid когда приложение должно поддерживать разные языки со словарем ресурсов.

для двух других (x: Key и x: Name) основное эмпирическое правило-использовать x: имя для элементов структуры и x: Key для стилей, шаблонов и так далее. Поэтому для вашего вопроса, если вы называете сам шаблон, вы бы использовали x: Key. Элементы управления, объявленные в шаблоне, будут использовать x: имя.

полный список всех директив Xaml приведен в Пространство Имен Xaml


Если вы хотите применить шаблон ко всем вкладкам на Вашей странице, вы можете использовать x: введите, но если вы хотите применить его к нескольким вкладкам, а не ко всем вкладкам, которые вы можете использовать x: Key.

обычно вы будете использовать x: Key Если вы хотите использовать его в качестве StaticResource в файле xaml. Вы обеспечите x: Name к элементу управления или шаблону, когда вы хотите сослаться на него в своем коде. Я никогда не использовал X:Uid, но это то, что MSDN говорит:

используйте x: Uid для идентификации элемента объекта в XAML. Как правило, это элемент object является экземпляром класса control или другого элемента это отображается в пользовательском интерфейсе. Взаимосвязь между строкой используйте в X: Uid и строки, которые вы используете в файле ресурсов, это строки файла ресурсов-это X: Uid, за которым следует точка (.) и затем имя определенного свойства элемента локализованный.