Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

х: Key

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

х: Name

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

х: Uid

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

Примечания

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

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

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

Ответ 2

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

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

Используйте x: Uid для идентификации элемента объекта в вашем XAML. Обычно это object element - это экземпляр класса управления или другого элемента который отображается в пользовательском интерфейсе. Связь между строкой, которую вы используйте в x: Uid и строки, которые вы используете в файле ресурсов, - это то, что Строки файла ресурсов - это x: Uid, за которым следует точка (.), а затем имя конкретного свойства элемента, являющегося локализованы.