有时似乎 Name 和 x:Name 属性是可互换的 . 我们可以在XAML中引用Framework元素的 Name 和 x:Name . 但是在 x:key 的情况下,WPF不提供像 Name 这样的 "key" 关键字 . Name 和 x:Name 都是出于同样的目的 . Name 无需输入 x: 即可使用 . 为什么我们不能在XAML中使用 key ?
实际上有一个Name property on FrameworkElemnet . 实际上x:Name Directive将映射到 Name 属性,因为RuntimeNamePropertyAttribute会导致解析器执行映射 . 这些实际上不是100%可互换的 - 它更像是单向映射,其中解析器设置 FrameworkElement.Name 属性以匹配 x:Name 中指定的值 .
Name
FrameworkElement.Name
x:Name
"Key"不存在此类属性或属性,因此 x:Key 指令无法以相同方式映射到属性 .
x:Key
如果你谈论Xaml,那么只有x:Name . WPF框架可以通过使用类的 RuntimeNamePropertyAttribute 将其属性之一映射到XAML的x:Name,该类将属性之一分配给Xaml的 x:Name . 因此设置 x:Name 相当于设置 Name .
RuntimeNamePropertyAttribute
x:Key 另一方面是 Xaml 资源的关键 . 它用于唯一标识 ResourceDictionary 中的资源 .
Xaml
ResourceDictionary
2 回答
实际上有一个Name property on FrameworkElemnet . 实际上x:Name Directive将映射到
Name
属性,因为RuntimeNamePropertyAttribute会导致解析器执行映射 . 这些实际上不是100%可互换的 - 它更像是单向映射,其中解析器设置FrameworkElement.Name
属性以匹配x:Name
中指定的值 ."Key"不存在此类属性或属性,因此
x:Key
指令无法以相同方式映射到属性 .如果你谈论Xaml,那么只有x:Name . WPF框架可以通过使用类的
RuntimeNamePropertyAttribute
将其属性之一映射到XAML的x:Name,该类将属性之一分配给Xaml的x:Name
. 因此设置x:Name
相当于设置Name
.x:Key
另一方面是Xaml
资源的关键 . 它用于唯一标识ResourceDictionary
中的资源 .