我需要这个依赖属性只能用于读取操作。外部对象不应为其赋值。
问问题
162 次
2 回答
7
是的,当然(想想为什么应该存在IsMouseOver
只读依赖属性)。MSDN有一篇关于这个主题的精彩文章。
实现只读依赖属性存在一些问题,在某些情况下它们将不起作用。但是,在某些情况下是可能的。对于这些情况,以下是实现只读依赖属性的简要指南:
- 使用
RegisterReadOnly
而不是Register
. - 不要在包装的属性中公开公共 set 方法。
- from 的返回值
RegisterReadOnly
是类型DependencyPropertyKey
(而不是通常的DependencyProperty
)。存储但不公开此值。
链接的文章将为您提供必要的详细信息。
于 2009-08-24T17:08:20.767 回答
4
是的你可以。
MSDN 有一整节描述了如何定义和使用Read-Only Dependency Properties。
主要问题是调用DependencyProperty.RegisterReadOnly而不是 Register。此外,如果您在对象上创建一个属性来处理此问题,请确保仅在该属性中实现公共 getter,而不是公共 setter。
于 2009-08-24T17:07:28.727 回答