x:Class 指令
配置 XAML 标记编译,以在标记和代码隐藏之间联接分部类。 代码分部类是在公共语言规范(CLS)语言的单独代码文件中定义的,而标记分部类通常是在 XAML 编译过程中由代码生成创建的。
XAML 属性用法
<object x:Class="namespace.classname"...>
...
</object>
XAML 值
价值 | 描述 |
---|---|
namespace |
自选。 指定一个 CLR 命名空间,该命名空间包含由 classname 标识的分部类。 如果指定了 namespace ,则点 (.) 将分隔 namespace 和 classname 。 请参阅“备注”。 |
classname |
必填。 指定分部类的 CLR 名称,该部分类连接已加载的 XAML 和该 XAML 的代码隐藏。 |
依赖
只能在 XAML 生产根元素上指定 x:Class
。 对于 XAML 生产中具有父级的任何对象,x:Class
无效。 有关详细信息,请参阅 [MS-XAML] 第 6.3.1.6 节。
言论
namespace
值可能包含其他点,用于将相关命名空间组织到名称层次结构中,这是 .NET 编程中的常见技术。 只有 x:Class
值字符串中的最后一个点被解释为分隔 namespace
,classname.
用作 x:Class
的类不能是嵌套类。 不允许嵌套类,因为如果允许嵌套类,则确定 x:Class
字符串的点的含义是不明确的。
在使用 x:Class
的现有编程模型中,x:Class
是可选的,因为拥有没有代码隐藏的 XAML 页面是完全有效的。 但是,该功能与使用 XAML 的框架实现的生成操作进行交互。
x:Class
功能还受应用程序模型和相应生成操作中 XAML 指定内容的各种分类的角色的影响。 如果 XAML 声明事件处理属性值或实例化定义类位于代码隐藏类中的自定义元素,则必须将 x:Class
指令引用(或 x:Subclass)提供给代码隐藏的相应类。
x:Class
指令的值必须是一个字符串,指定类的完全限定名称,但没有任何程序集信息(等效于 Type.FullName)。 对于简单应用程序,如果代码隐藏也采用这种方式(代码定义从类级别开始),则可以省略 CLR 命名空间信息。
页面或应用程序定义的代码隐藏文件必须包含在生成已编译应用程序且涉及标记编译的项目中包含的代码文件中。 必须遵循 CLR 类的名称规则。 有关详细信息,请参阅 框架设计指南。 默认情况下,代码隐藏类必须 public
;但是,可以使用 x:ClassModifier 指令在不同的访问级别定义它。
x:Class
属性的这种解释仅适用于基于 CLR 的 XAML 实现,特别是适用于 .NET XAML 服务。 其他不基于 CLR 且不使用 .NET XAML 服务的 XAML 实现可能会使用不同的解析公式来连接 XAML 标记和支持运行时代码。 有关 x:Class
的更多常规解释的详细信息,请参阅 [MS-XAML]。
在某种级别的体系结构中,x:Class
的含义在 .NET XAML 服务中未定义。 这是因为 .NET XAML 服务未指定 XAML 标记和支持代码连接的编程模型。 可以使用编程模型或应用程序模型定义如何连接 XAML 标记和基于 CLR 的代码隐藏的特定框架来实现 x:Class
指令的其他用法。 每个框架都可以有自己的生成操作,这些操作可以启用生成环境中必须包含的某些行为或特定组件。 在框架中,生成操作也可能因用于代码隐藏的特定 CLR 语言而异。
WPF 编程模型中的 x:Class
在 WPF 应用程序和 WPF 应用程序模型中,x:Class
可以声明为作为 XAML 文件的根目录且正在编译的任何元素的属性(其中 XAML 包含在具有 Page
生成操作的 WPF 应用程序项目中),或编译的 WPF 应用程序定义中的 Application 根。 在页面根或应用程序根目录以外的元素上声明 x:Class
,或在未编译的 WPF XAML 文件中声明会导致 .NET Framework 3.0 和 .NET Framework 3.5 WPF XAML 编译器下的编译时错误。 有关 WPF 中
适用于 Windows Workflow Foundation 的 x:Class
对于 Windows Workflow Foundation,x:Class
为完全在 XAML 中撰写的自定义活动的类命名,或者为带有代码隐藏的活动设计器命名 XAML 页面的分部类。
Silverlight 用法说明
Silverlight 的 x:Class
单独记录。 有关详细信息,请参阅 XAML 命名空间(x:)语言功能(Silverlight)。
另请参阅
- x:Subclass 指令
- 为 WPF
XAML 和自定义类 - x:ClassModifier 指令
- 从 WPF 迁移到 System.Xaml 的
类型