Стили WPF: различие между x:Name и x:Type

При определении стиля в словаре ресурса можно использовать также

x:Name="xyz"

и

x:Type="xyz". 

и может сослаться на этот стиль в XAML как {StaticResource xyz}.

Большинство примеров использует 'x:Key', и различие между 'именем' и 'ключом' - то, что использование 'x:name' позволяет Вам использовать этот код определения стилей - позади?

ФИКСИРУЕТ: вопрос является полностью неправильным. То, что было предназначено, чтобы быть спрошенным, было различием между x:Key и x:Name., Но не пошло, пробуя этот код самостоятельно, но просто полагалось на памяти - думал, что у меня есть оба в ResourceDictionary, который был неправ. И у меня также не было такого кода в

 <xxx.Resources > 

разделы, так как это не работает также. Вы не можете стиль ссылки, который не имеет x:Key (x:Name, не работает здесь), и добавление, что два стиля без x:Key выдают исключение, так как оба получают то же (пустой?) вводят словарь.

Ray помещает все различие очень хорошим способом, спасибо.
Мой отказ

6
задан Dave Clemmer 15 August 2011 в 19:15
поделиться

2 ответа

Это трюк. На самом деле, вы не могут определить стиль в ресурсе, используя либо

x:Type="xyz"

, либо

x:Name="xyz"

вот разница:

  • X: TYPE = «XYZ» недействительно XAML синтаксис.
  • x: name = "xyz" на самом деле действительна синтаксиса XAML, имеющих объект (который влияет на генерацию кода), но не обеспечивает ключ словаря.
  • X: KEY = «XYZ» также является действительным синтаксисом XAML, который обеспечивает ключ словаря, но не называет объект.

В словаре требуется ключ, поэтому вы должны указать X: ключ (за исключением того, что для FrameworkTemplate и его подклассов ключ можно выводить из TargetType или DataType). В словаре вы также можете указать x: Имя , если это необходимо, но он не влияет на ключ.

Обратите внимание, что X: тип - расширение разметки, которое предопределено XAML, тогда как x: Имя и x: Клавиша - это фактические ключевые слова XAML. Итак x: Тип можно использовать только в синтаксисе расширения разметки только в качестве значения свойства:

something="{x:Type whatever}"

, тогда как x: Имя и x: Клавиша Это можно использовать на элементах.

9
ответ дан 9 December 2019 в 22:34
поделиться

X: Имя Позволяет создать ссылку, которую вы можете использовать по имени.

X: Type позволяет создавать ссылку, которая используется, например, в

<Style TargetType="{x:Type Button}">
    ...
</Style>

создает стиль, который автоматически влияет на кнопки

2
ответ дан 9 December 2019 в 22:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: