x:FieldModifier 指令

修改 XAML 编译行为,以便使用 TypeAttributes.Public 访问权限而不是 TypeAttributes.NotPublic 默认行为定义命名对象引用的字段。

XAML 属性用法

<object x:FieldModifier="Public".../>

XAML 值

价值 描述
公共 传递给指定 TypeAttributes.PublicTypeAttributes.NotPublic 的确切字符串因所使用的代码隐藏编程语言而异。 请参阅“备注”。

依赖

如果 XAML 生产在任何位置使用 x:FieldModifier,则 XAML 生产中的根元素必须声明 x:Class 指令

言论

x:FieldModifier 与声明类或其成员的常规访问级别无关。 仅当处理属于 XAML 生产一部分的特定 XAML 对象并成为应用程序的对象图中可能可访问的对象时,它才与 XAML 处理行为相关。 默认情况下,此类对象的字段引用保持私有,这可以防止控件使用者直接修改对象图。 相反,控件使用者应通过使用编程模型启用的标准模式来修改对象图,例如,通过获取布局根、子元素集合、专用公共属性等。

x:FieldModifier 属性的值因编程语言而异,其用途可能因特定框架而异。 要使用的字符串取决于每个语言如何实现其 CodeDomProvider 以及它返回的类型转换器来定义 TypeAttributes.PublicTypeAttributes.NotPublic的含义,以及该语言是否区分大小写。

  • 对于 C#,要传递给指定 TypeAttributes.Public 的字符串 public

  • 对于 Microsoft Visual Basic .NET,要传递给指定 TypeAttributes.Public 的字符串 Public

  • 对于 C++/CLI,当前不存在 XAML 的目标;因此,要传递的字符串未定义。

还可以在 C# 中指定 TypeAttributes.NotPublicinternal,在 Visual Basic 中 Friend),但指定 TypeAttributes.NotPublic 是不寻常的,因为 NotPublic 行为已是默认值。

TypeAttributes.NotPublic 是默认行为,因为编译 XAML 的程序集外部的代码不常访问 XAML 创建的元素。 WPF 安全体系结构与 XAML 编译行为一起不会声明将元素实例存储为公共的字段,除非你专门将 x:FieldModifier 设置为允许公共访问。

x:FieldModifier 仅适用于具有 x:Name 指令 的元素,因为该名称用于在字段公开后引用字段。

默认情况下,根元素的分部类是公共的;但是,可以使用 x:ClassModifier 指令将其设为非公共。 x:ClassModifier 指令 还影响根元素类实例的访问级别。 可以将 x:Namex:FieldModifier 放在根元素上,但这只会创建根元素的公共字段副本,而真正的根元素类访问级别仍由 x:ClassModifier 指令控制。

另请参阅