WPF中的x:Key和x:Name的区别
x:Key ,仅仅用作ResourceDictionary中元素的主要标识符, x:Key在ResourceDictionary范围之外无效。
x:Name ,在除ResourceDictionary之外的所有内容中均有效。
他们的目的类似,但不可互换。
x:Key 用于将要作为值添加到字典中的项目,最常用于要添加到ResourceDictionary的样式和其他资源。设置x:Key属性时,实际上在对象上没有相应的属性,甚至没有设置附加的依赖项属性。 XAML处理器仅使用它来知道调用Dictionary.Add时要使用的键。
x:Name 有点复杂。它用于将关联名称应用于某个父元素范围内的对象(通常是从FrameworkElement派生的对象)。此作用域称为“名称范围”,想到它的最简单方法是想象一个包含<TextBox x:Name =“ foo” />的UserControl。然后,您可以将UserControl的多个实例放到Window上,而不会碰撞名称“ foo”,因为每个UserControl都有自己的名称范围。
注意,FrameworkElement定义了一个名为Name的依赖项属性,它等同于设置x:Name,推荐使用后一种方式
另一个区别是XAML设计器在代码背后为具有x:Name的元素创建成员。对于使用x:Key添加到字典中的对象,情况并非如此。

浙公网安备 33010602011771号