x:FieldModifier 指令
修改 XAML 编译行为,以便使用 TypeAttributes.Public 访问权限而不是 TypeAttributes.NotPublic 默认行为定义命名对象引用的字段。
XAML 属性用法
<object x:FieldModifier="Public".../>
XAML 值
价值 | 描述 |
---|---|
公共 | 传递给指定 TypeAttributes.Public 与 TypeAttributes.NotPublic 的确切字符串因所使用的代码隐藏编程语言而异。 请参阅“备注”。 |
依赖
如果 XAML 生产在任何位置使用 x:FieldModifier
,则 XAML 生产中的根元素必须声明 x:Class 指令。
言论
x:FieldModifier
与声明类或其成员的常规访问级别无关。 仅当处理属于 XAML 生产一部分的特定 XAML 对象并成为应用程序的对象图中可能可访问的对象时,它才与 XAML 处理行为相关。 默认情况下,此类对象的字段引用保持私有,这可以防止控件使用者直接修改对象图。 相反,控件使用者应通过使用编程模型启用的标准模式来修改对象图,例如,通过获取布局根、子元素集合、专用公共属性等。
x:FieldModifier
属性的值因编程语言而异,其用途可能因特定框架而异。 要使用的字符串取决于每个语言如何实现其 CodeDomProvider 以及它返回的类型转换器来定义 TypeAttributes.Public 和 TypeAttributes.NotPublic的含义,以及该语言是否区分大小写。
对于 C#,要传递给指定 TypeAttributes.Public 的字符串
public
。对于 Microsoft Visual Basic .NET,要传递给指定 TypeAttributes.Public 的字符串
Public
。对于 C++/CLI,当前不存在 XAML 的目标;因此,要传递的字符串未定义。
还可以在 C# 中指定 TypeAttributes.NotPublic(internal
,在 Visual Basic 中 Friend
),但指定 TypeAttributes.NotPublic 是不寻常的,因为 NotPublic
行为已是默认值。
TypeAttributes.NotPublic 是默认行为,因为编译 XAML 的程序集外部的代码不常访问 XAML 创建的元素。 WPF 安全体系结构与 XAML 编译行为一起不会声明将元素实例存储为公共的字段,除非你专门将 x:FieldModifier
设置为允许公共访问。
x:FieldModifier
仅适用于具有 x:Name 指令 的元素,因为该名称用于在字段公开后引用字段。
默认情况下,根元素的分部类是公共的;但是,可以使用 x:ClassModifier 指令将其设为非公共。
x:ClassModifier 指令 还影响根元素类实例的访问级别。 可以将 x:Name
和 x:FieldModifier
放在根元素上,但这只会创建根元素的公共字段副本,而真正的根元素类访问级别仍由 x:ClassModifier 指令控制。
另请参阅
- 为 WPF
XAML 和自定义类 - WPF 中的
Code-Behind 和 XAML - x:Name 指令
- 生成 WPF 应用程序(WPF)
- x:ClassModifier 指令