【问题标题】:What's the difference between x:Key and x:Name in WPF?WPF中的x:Key和x:Name有什么区别?
【发布时间】:2015-10-08 21:40:01
【问题描述】:

WPF中x:Keyx:Name有什么区别?

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

【问题讨论】:

    标签: wpf


    【解决方案1】:

    尽管它们用于类似的目的,但它们不可互换。 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 添加到字典的对象,情况并非如此。

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

    【讨论】:

      【解决方案2】:

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

      另一方面,x:Name 在除 ResourceDictionary 之外的所有范围内都是有效的。 x:Key 在 ResourceDictionary 范围之外无效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-04
        • 1970-01-01
        • 2010-09-17
        • 2011-01-25
        • 2011-05-18
        • 2010-10-11
        • 2011-03-08
        • 1970-01-01
        相关资源
        最近更新 更多