XAML中x:Key、x:Name、x:Type、x:Static的含义

11
在msdn网站上有大量关于XAML概述的文章:XAML概述。其中有一部分描述了什么是x:Keyx:Classx:Name等,但问题在于这些都很抽象,没有例子。
我知道当我在XAML中创建一个元素并设置:x:Name = "abc"时,在cs文件中我可以通过abc.fieldORmethod()访问此对象,但其余情况呢?以下语句能否提供带有示例的解释?
  • x:Key:为ResourceDictionary(或其他框架中类似字典的概念)中的每个资源设置唯一键。在典型的WPF应用程序标记中,x:Key可能占到90%以上的使用率。
  • x:Class:指定提供XAML页面代码后台的CLR命名空间和类名。根据WPF编程模型,您必须拥有这样的类来支持代码后台,因此几乎总是看到x:映射,即使没有资源。
  • x:Name:指定在处理对象元素后存在于运行时代码中的实例的运行时对象名称。通常,您会经常使用WPF定义的等效属性来替代x:Name。这些属性特定映射到CLR备份属性,因此更方便用于应用程序编程,在初始化XAML后,您经常使用运行时代码来查找命名元素。最常见的这种属性是FrameworkElement.Name。当特定类型不支持等效的WPF框架级别Name属性时,仍可以使用x:Name。这在某些动画场景中发生。
  • x:Static: 启用引用,返回一个静态值,该值不是 XAML 兼容属性。
  • x:Type: 基于类型名称构建类型引用。这用于指定需要 Type 的属性,例如Style.TargetType,虽然通常在此类情况下,该属性具有本机的字符串到 Type 的转换方式,因此 x:Type 标记扩展的使用是可选的。

  • 你试过这里的页面了吗 - http://msdn.microsoft.com/en-us/library/ms753327(v=vs.110).aspx 它似乎有一些更好的示例。 - czuroski
    @Yoda 我有同样的问题,谢谢您的发帖并得到我的点赞。你的问题非常清晰,这个问题确实存在。 - Mohit Shah
    1个回答

    26

    x:Key是用来定义在XAML中可以重复使用的资源的,相当于普通字典中的键(Key)。

    <Window.Resources>
       <Style x:Key="ButtonStyle"/>
    </Window.Resources>
    

    x:Static被用来表示一些静态数据。假设您想要声明使用SystemColors枚举下定义的一些静态颜色的画刷。

    <SolidColorBrush Color="{x:Static SystemColors.ControlColor}" />
    

    x:Type 等同于 C# 中的 Type 类。它表示类的类型。

    <Style TargetType="{x:Type Button}"/>
    

    x:Name用于为控件提供名称,以便可以使用该名称从代码后台访问该控件或者可以在XAML中使用ElementName进行数据绑定。

    <TextBlock x:Name="txt1" Text="Test"/>
    <TextBlock x:Name="txt2" Text="{Binding Text,ElementName=txt}"/>
    

    8
    1. x:Key 可以用于将项放入任何 IDictionary,而不仅仅是 ResourceDictionary
    2. 我会说 x:Type 类似于 typeof返回 Type
    3. x:Name 也可以使用 x:Reference 引用(Binding 是特定于 WPF 的)。
    - Athari
    @Athari - True +1。有多种用途,我只是发布了一个相关的使用示例。 - Rohit Vats
    x:Class是什么意思? - undefined

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接