2011-04-10 13 views

Respuesta

3

Conceptualmente, una propiedad de dependencia es algo que un objeto de dependencia simplemente tiene y que no depende de cuándo se usa la propiedad. Al igual que una propiedad CLR, si se le pregunta qué este objeto tiene una propiedad Total, usted sabe que no puede ser un double ahora, pero una int más tarde. Como resultado, haríamos la propiedad de dependencia const si pudiéramos, pero no podemos, por lo que readonly es la siguiente mejor opción.

El uso de la palabra clave readonly tiene al menos tres efectos:

  • se informa a los lectores del código que el valor no cambiará
  • evita que el autor de la modificación accidental de un valor
  • asiste a las compilador, que se beneficia de saber cuándo las cosas no cambiarán
+0

sí, entendido. pero si declaro que no es solo de lectura, y quiero cambiar esta propiedad dinámicamente en tiempo de ejecución por alguna razón, ¿es posible? ¿o para este escenario hay mejores soluciones? – zinking

1

ya que hace más obvio, que el valor de esta propiedad no se puede cambiar después de la inicialización.

1

Esperamos que esto ayudaría: Silverlight.net forums: DependencyProperty - public static readonly?

Para citar:

El "sólo lectura estática pública" es el campo que regresa de la llamada Registro. El campo es el identificador de la propiedad. Solo necesita el identificador para que el sistema de propiedad de Silverlight sepa qué hacer, y para que pueda usar el sistema de propiedad usted mismo cuando defina el "contenedor" CLR de la propiedad de la dependencia. Una vez que tenga el envoltorio, todo el uso posterior de la propiedad puede usarlo como una propiedad típica.

Público para que todos los sistemas de establecimiento Llamadas incluidas a través del ensamblaje puede acceder a él.

estático y sólo lectura, porque esto no es una definición que nunca debe cambiar; el sistema de propiedad necesita obtener resultados consistentes.

En el caso propiedad adjunta, que quieren que haya una clase de "propietario". La clase propietaria debe ser la clase que llama RegisterAttached, Y también debe definir los métodos de acceso estático (Get * y Set *) para que el analizador XAML sepa qué hacer cuando intenta establecer la propiedad adjunta en una instancia de DependencyObject. Así que es un poco diferente, porque para una propiedad adjunta no suele haber un "contenedor", cualquier acceso al código solo usa los accesadores Get * y Set *.

Cuestiones relacionadas