有时 Name 和 x:Name 属性似乎是可以互换的。我们可以在 XAML 中引用框架元素的 Name 和 x:Name。但在 x:key 的情况下,WPF 不提供"key"关键字,如 Name。Name 和 x:Name 用于相同的目的。无需键入 x: 即可使用名称。为什么我们不能在 XAML 中使用这样的密钥?
实际上FrameworkElemnet
上有一个Name
属性。 x:Name
指令实际上将映射到 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
中的资源。