x:Key和x:WPF中的名称有什么区别?

LB.*_*LB. 52 wpf

WPF x:Keyx:NameWPF 之间的区别是什么?

我不确定真正的区别是什么.

Jos*_*osh 50

虽然它们用于类似目的,但它们不可互换.x:Key用于作为值添加到字典中的项目,通常用于添加到ResourceDictionary的样式和其他资源.设置x:Key属性时,实际上对象上没有相应的属性,甚至没有设置附加的依赖项属性.XAML处理器简单地使用它来知道调用Dictionary.Add时要使用的密钥.

x:名称有点复杂.它用于在某个父元素的范围内将关联名称应用于对象(通常是从FrameworkElement派生的对象).这个范围被称为"namescope",最简单的思考方式是想象一个包含一个的UserControl <TextBox x:Name="foo" />.

然后,您可以将UserControl的多个实例放在一个没有名称"foo"冲突的Window上,因为每个UserControl都有自己的名称范围.

值得注意的是,FrameworkElement定义了一个名为Name的依赖项属性,它等同于设置x:Name.

另一个区别是XAML设计器在代码隐藏中为具有x:Name的元素创建成员.对于使用x:Key添加到字典的对象,情况并非如此.

您可以在x:Name指令的MSDN文档的备注部分中找到有关这些的更多信息.


Kis*_*mar 22

x:Key仅在ResourceDictionary元素的范围内有效.x:Key用作ResourceDictionary中元素的主要标识符.

另一方面,x:Name在除ResourceDictionary之外的所有内容中都有效.x:密钥在ResourceDictionary范围之外无效.