2010-07-09 2 views

ответ

12

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

8

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

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

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

Смежные вопросы