一.XAML 命名空间
XAML 使用 xmlns XML 特性进行命名空间声明。 XAML 文件的根元素中始终有两个 XAML 命名空间声明。 第一个定义默认命名空间
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
第二个命名空间声明使用 x 前缀
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
XAML 使用前缀声明非默认命名空间,并在引用命名空间中的类型时使用前缀。 x 命名空间声明指定在 XAML 中定义的带有 x 前缀的元素用于 XAML(特别是 2009 XAML 规范)固有的元素和属性。
下表概述了 .NET MAUI 支持的 x 构造:
| 构造 | 描述 |
|---|---|
x:Arguments | 指定非默认构造函数或工厂方法对象声明的构造函数参数。 |
x:Class | 指定 XAML 中定义的类的命名空间和类名。 类名必须与代码隐藏文件的类名匹配。 请注意,此构造只能出现在 XAML 文件的根元素中。 |
x:ClassModifier | 指定程序集中生成的类的访问级别。 |
x:DataType | 指定 XAML 元素及其子元素将绑定到的对象的类型。 |
x:FactoryMethod | 指定可用于初始化对象的工厂方法。 |
x:FieldModifier | 指定命名 XAML 元素的生成字段的访问级别。 |
x:Key | 为 ResourceDictionary 中的每个资源指定一个唯一的用户定义密钥。 密钥的值用于检索 XAML 资源,通常用作 StaticResource 标记扩展的参数。 |
x:Name | 指定 XAML 元素的运行时对象名称。 设置 x:Name 类似于在代码中声明变量。 |
x:TypeArguments | 指定泛型类型构造函数的泛型类型参数。 |
声明类型的命名空间(自定义类的路由)
可以通过使用前缀声明 XAML 命名空间,在 XAML 中引用类型,命名空间声明指定公共语言运行时 (CLR) 命名空间名称以及可选的程序集名称。 这通过在命名空间声明中定义以下关键字的值来实现:
clr-namespace:或using:- 在程序集中声明的 CLR 命名空间,此程序集包含要作为 XAML 元素公开的类型。 此关键字是必需的。assembly=- 包含引用的 CLR 命名空间的程序集。 该值是程序集的名称,不带文件扩展名。 程序集的路径应在包含将引用程序集的 XAML 文件的项目中作为引用建立。 如果 clr-namespace 值与引用类型的应用代码位于同一程序集中,则可以省略此关键字。
以下代码示例演示 XAML 命名空间声明:
<ContentPage ... xmlns:local="clr-namespace:MyMauiApp">
...
</ContentPage>
或者,也可以编写为:
<ContentPage ... xmlns:local="using:MyMauiApp">
...
</ContentPage>
local 前缀是一种约定,用于表示命名空间中的类型是应用的本地类型。 或者,如果类型位于另外的程序集中,则还应在命名空间声明中定义程序集名称:
<ContentPage ... xmlns:controls="clr-namespace:Controls;assembly=MyControlLibrary" ...>
...
</ContentPage>
然后,从导入的命名空间声明类型的实例时指定命名空间前缀:
<controls:Expander IsExpanded="True">
...
</controls:Expander>
二.类修饰符
.NET Multi-platform App UI (.NET MAUI) x:ClassModifier 属性指定程序集中生成的类的访问级别,前提是 x:Class 是在同一 XAML 元素上指定的。 此操作可将类型隐藏在库中,让使用者无法访问。
x:ClassModifier 属性的有效值如下:
Public- 指定生成的类没有访问限制。Internal- 指定生成的类只能在同一程序集的类型中访问。NotPublic- 等同于Internal。
x:ClassModifier 属性的值必须与其代码隐藏文件中类型的访问级别保持一致。
默认情况下,如果未设置属性的值,则生成的类为 public。
以下 XAML 演示了设置该属性的示例:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyMauiApp.MainPage"
x:ClassModifier="NotPublic">
...
</ContentPage>
三.字段修饰符
.NET Multi-platform App UI (.NET MAUI) x:FieldModifier 属性指定命名 XAML 元素的生成字段的访问级别。
x:FieldModifier 属性的有效值如下:
Private- 指定 XAML 元素的生成字段只能在声明该字段的类的正文中访问。Public- 指定 XAML 元素的生成字段没有访问限制。Protected- 指定 XAML 元素的生成字段可在其类中访问,也可由派生类实例访问。Internal- 指定 XAML 元素的生成字段只能在同一程序集的类型中访问。NotPublic- 等同于Internal。
默认情况下,如果未设置属性的值,则元素的生成字段为 private。
要处理 x:FieldModifier 属性,必须满足以下条件:
- 顶级 XAML 元素必须是有效的
x:Class。 - 当前 XAML 元素指定了
x:Name。
以下 XAML 演示了设置该属性的示例:
<Label x:Name="privateLabel" />
<Label x:Name="internalLabel" x:FieldModifier="NotPublic" />
<Label x:Name="publicLabel" x:FieldModifier="Public" />

523

被折叠的 条评论
为什么被折叠?



