我可以创建一个只读的依赖属性吗?

时间:2009-08-24 16:59:53

标签: .net wpf dependency-properties

我需要此依赖项属性才能进行读取操作。外部对象不应该为其赋值。

2 个答案:

答案 0 :(得分:7)

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

实现只读依赖项属性存在一些问题,在某些情况下它们无法正常工作。但是,在某些情况下是可能的。对于这些情况,以下是实现只读依赖项属性的简要指南:

  1. 使用RegisterReadOnly代替Register
  2. 不要在包装属性中公开公共集方法。
  3. RegisterReadOnly的返回值属于DependencyPropertyKey类型(而不是通常的DependencyProperty)。存储但不要公开此值。
  4. 链接的文章将为您提供必要的详细信息。

答案 1 :(得分:4)

是的,你可以。

MSDN有一整节介绍如何定义和使用Read-Only Dependency Properties

主要问题是拨打DependencyProperty.RegisterReadOnly而不是注册。此外,如果您在对象上创建一个属性来处理此问题,请确保仅在属性中实现公共getter,而不是公共setter。