2009-02-03 18 views
5

Después de mucha búsqueda en MSDN y otras fuentes, básicamente he encontrado que "algunas" Propiedades de Dependencia realmente admiten herencia de valor de propiedad similar a WPF. Sin embargo, hasta donde puedo decir, no hay una lista definitiva de qué propiedades hacen, y cuáles no. Sé que las propiedades de las fuentes, por ejemplo, sí; yet HorizontalContentAlignment no lo hace. También he visto el otro hilo en este foro que señala que la lista de prioridad de DP no incluye la herencia de valores (http://msdn.microsoft.com/en-us/library/cc265148(VS.95).aspx#listing).Propiedad Value Herencia

Además, parece que ni siquiera es posible aplicar metadatos heredables a ningún DP personalizado, por lo que parece que el marco de Silverlight lo ha pirateado para propiedades específicas. Necesito saber exactamente qué propiedades de dependencia son compatibles con la herencia de valor de propiedad. Si me perdí un artículo obvio sobre esto, o un hilo, me disculpo, pero he sido bastante minucioso en mi búsqueda.

Gracias.

Respuesta

4

usted menciona que las propiedades de fuente admiten esto, así que hizo un poco de investigación en el reflector y encontramos este interesante:

TextBlock

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x40003714, typeof(double)); 

control

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x80003714, typeof(double)); 

Inline

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x3714, typeof(double)); 

Por lo tanto, las tres clases definen FontSizeProperty y la identificación utilizada es muy similar, como si ese primer bit fuera simplemente una bandera de algún tipo. Por lo tanto, quizás haya algo bajo las cubiertas que permita lo que está llamando herencia de la propiedad, ya que el marco podría transferir los valores entre estos ids de dp similares.

2

Consulte la sección "información de dependencia de la propiedad" de la MaxHeight (que no hereda el valor de los padres) y Tamaño de Letra (que hace propaga como usted la describe):

MaxHeight

FontSize


De MSDN webpage:

Valor de la propiedad Herencia

Un elemento puede heredar el valor de una propiedad de dependencia de su elemento primario en el árbol.

Nota:

valor de la propiedad comportamiento de herencia no está activada de forma global para todas las propiedades de dependencia, ya que el tiempo de cálculo para la herencia tiene cierto impacto en el rendimiento. Por lo general, la herencia de valor de propiedad solo está habilitada para las propiedades donde un escenario particular sugiere que la herencia de valor de propiedad es apropiada. Puede determinar si una propiedad de dependencia hereda mirando la sección Información de propiedad de dependencia para esa propiedad de dependencia en la referencia de SDK.


+1

Los enlaces de arriba son para WPF, no para Silverlight. La documentación de la propiedad de Silverlight, p. para [TextBlock.FontSize] (http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.fontsize (v = vs.95) .aspx), no indica si la propiedad se hereda. –

+0

El enlace para "página web de MSDN" también hace referencia al mismo enlace exacto que MaxHeight. Copiar/Pegar error? – BSick7