Различие между x:Key и x:Name

Каково различие между x:Key и x:Name в WPF?

9
задан Jeaf Gilbert 9 July 2010 в 08:21
поделиться

3 ответа

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

12
ответ дан 4 December 2019 в 10:03
поделиться

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 -->
8
ответ дан 4 December 2019 в 10:03
поделиться

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

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

1
ответ дан 4 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

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