x:FieldModifier 指令
修改 XAML 编译行为,使用 TypeAttributes.Public 访问方式来定义命名对象引用的字段,而不使用 TypeAttributes.NotPublic 默认行为。
XAML 特性用法
<object x:FieldModifier="Public".../>
XAML 值
Public |
根据所使用的代码隐藏编程语言,您传递的用于指定 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 的目标当前不存在;因此未定义要传递的字符串。
也可以指定 TypeAttributes.NotPublic (internal 中的 C#, Friend 中的 Visual Basic) 但指定 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 指令控制。