Разница между x: ключом и x: именем - PullRequest
9 голосов
/ 09 июля 2010

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

Ответы [ 3 ]

12 голосов
/ 09 июля 2010

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

8 голосов
/ 09 июля 2010

x:Name используется для именования элементов пользовательского интерфейса (например, элементов управления, панелей и т. Д.), Тогда как x:Key используется для идентификации ресурсов (которые могут быть в большей или меньшей степени) в пределах ResourceDictionary.

Это означает, что вы не можете ссылаться на вещи в словаре ресурсов, используя значение x:Name:

 <Grid>
    <Grid.Resources>
        <Style x:Name="StyleName" x:Key="StyleKey" />
    </Grid.Resources>
    <Button Style="{StaticResource StyleName}" /> <!-- Will not work-->
    <Button Style="{StaticResource StyleKey}" /> <!-- Will work -->
</Grid>

Вы также заметите, что элементы, не входящие в словарь ресурсов, не могут иметь атрибут x:Key:

<TextBox x:Key="TextBoxKey" /> <!-- Will not compile -->
1 голос
/ 09 июля 2010

Да, вы бы использовали x: Key для назначения ключа ресурсам внутри ResourceDictionary, либо локально в разделе ресурсов для элемента, либо для конкретного ResourceDictionay.Этот ключ затем используется для поиска ресурса через {DynamicResource XXX} или {StaticResource XXX}.

x: Имя используется для назначения имени элементу управления в xaml.Затем его можно использовать для доступа к элементу в коде файла, используя обычный синтаксис или используя привязку ElementName внутри файла.

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