1

我需要这个依赖属性只能用于读取操作。外部对象不应为其赋值。

4

2 回答 2

7

是的,当然(想想为什么应该存在IsMouseOver只读依赖属性)。MSDN有一篇关于这个主题的精彩文章。

实现只读依赖属性存在一些问题,在某些情况下它们将不起作用。但是,在某些情况下是可能的。对于这些情况,以下是实现只读依赖属性的简要指南:

  1. 使用RegisterReadOnly而不是Register.
  2. 不要在包装的属性中公开公共 set 方法。
  3. 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 回答