2011-03-01 17 views
8

Espero que alguien pueda explicar un comportamiento inesperado que he encontrado mientras continúo mi exploración de DependencyObjects y DependencyProperties.¿Por qué puedo acceder a DependencyProperties que no están registradas en mi DependencyObject?

Dada la siguiente clase simple:

class SomeClass : DependencyObject { 
    } 

que felizmente puede escribir código como:

public static void Test() { 
    SomeClass a = new SomeClass(); 
    Console.WriteLine(a.GetValue(EllipseGeometry.RadiusXProperty)); 
    a.SetValue(EllipseGeometry.RadiusXProperty, 3.24); 
    Console.WriteLine(a.GetValue(EllipseGeometry.RadiusXProperty)); 
} 

que da el siguiente resultado:

0 
3.24 

No hay nada en mi clase que tiene alguna relación con la clase EllipseGeometry, y no he agregado mi clase como propietario del Propiedad EllipseGeometry.RadiusXProperty o usado RegisterAttached() entonces ¿por qué funciona esto? Parece que puedo felizmente agregar cualquier DP a mi DO sin que el Framework genere un error.

¿Alguien más encuentra este extraño comportamiento? Hubiera esperado alguna forma de excepción en la línea de "No ha registrado esta propiedad con este objeto" ... Agradecería cualquier guía sobre si hay algún uso particular para agregar DP a DO de esta manera, ya que no puede ver el propósito de permitir este comportamiento.

Muchas gracias, Matt

+0

Supongo que 'SomeClass' pretende ser 'TestClass' (o viceversa)? –

+0

¿EllipseGeometry.RadiusXProperty es una propiedad adjunta? –

+0

Hola Steven, adivinas correctamente y tuve un error de copiar y pegar. Cambié el nombre de TestClass a SomeClass. Es tarde, ¿qué más puedo decir? Gracias por tomarse el tiempo para responder –

Respuesta

1

Este comportamiento le permite utilizar las propiedades asociadas. Sin esto, ¿cómo se puede usar Grid.Row en un TextBox, por ejemplo?

Cuestiones relacionadas