45
A
回答
43
虽然它们用于类似的目的,但它们不可互换。 x:Key用于作为值添加到字典中的项目,通常用于添加到ResourceDictionary中的样式和其他资源。设置x:Key属性时,实际上对象上没有对应的属性,甚至没有设置附加的依赖项属性。它只是被XAML处理器用来调用Dictionary.Add时知道什么键。
x:名称有点复杂。它用于在某个父元素的范围内将关联名称应用于对象(通常是从FrameworkElement派生的对象)。此范围称为“名称范围”,想象它的最简单方法是想象一个包含<TextBox x:Name="foo" />
的用户控件。
然后,您可以将UserControl的多个实例放到窗口中,而不会名为“foo”,因为每个UserControl都有自己的名称范围。
值得注意的是FrameworkElement定义了一个名为Name的依赖项属性,它相当于设置x:Name。
另一个区别是,XAML设计器在具有x:Name的元素的代码隐藏中创建成员。使用x:Key添加到字典中的对象不是这样。
有关这些的更多信息,请参阅the x:Name directive的MSDN文档的备注部分。
20
x:键只在ResourceDictionary元素的范围内有效。 x:Key用作ResourceDictionary中元素的主标识符。
另一方面,x:Name在除ResourceDictionary以外的所有其他范围内都有效。 x:Key在ResourceDictionary范围外无效。
相关问题
- 1. x:Key和x之间的区别:名称
- 2. 使用x:WPF中的名称或名称
- 3. 名称和友好名称有什么区别?
- 4. 目标c中的(NSString)* name和(NSString *)名称有什么区别?
- 5. xtype和别名有什么区别?
- 6. 函数名称中'state'和'status'有什么区别?
- 7. 在Roslyn中,名称和标识符有什么区别?
- 8. 有什么区别`和$(Bash中有什么区别?
- 9. super()和Parent类名有什么区别?
- 10. JavaScript:函数名称和函数引用有什么区别?
- 11. “./file”名称和“../文件名”之间的区别是什么
- 12. 将类型用作不同名称和类型别名有什么区别?
- 13. sqlite_master中名称和tbl_name之间的区别是什么?
- 14. 别名和标签有什么区别? (一般和在git中)
- 15. ==和===有什么区别?
- 16. ==和===有什么区别?
- 17. 有什么区别? :和||
- 18. ==和===有什么区别?
- 19. '=='和'==='有什么区别?
- 20. `&`和`ref`有什么区别?
- 21. 有什么区别:。!和:r!?
- 22. | 0和~~有什么区别?
- 23. Appender和〜有什么区别?
- 24. 模式名称空间和WPF中的程序集引用有什么区别?
- 25. 软件包名称和Apple App商店名称之间的区别是什么?
- 26. python中的{}和[]有什么区别?
- 27. 列表中的:::和++有什么区别?
- 28. SQL中的“LIKE”和“=”有什么区别?
- 29. console.log中的和+有什么区别?
- 30. Perl中的'eq'和'=〜'有什么区别?
@Alastair,您列出的可能与此无关的问题与此无关。 – Josh 2010-12-13 03:39:51
它是如何重复的?另一个问题是关于'Name'与'Type'的关系。这个问题是关于'Key'与'Name'的关系。 – jalf 2010-12-13 03:40:28
我的错误,我误读了“可能的欺骗”问题。道歉。 – 2010-12-13 03:51:20