2011-10-04 7 views
5

Estoy creando un control personalizado (derivado de Control) y quiero definir un tema predeterminado para el control. Anteriormente, todos los controles personalizados que he creado, he utilizadoDiferencia entre las aproximaciones para establecer DefaultStyleKey

static IntegerUpDown() 
{ 
    DefaultStyleKeyProperty.OverrideMetadata(typeof(IntegerUpDown), 
    new FrameworkPropertyMetadata(typeof(IntegerUpDown))); 
} 

con este assembly atributo:

[assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly, 
ResourceDictionaryLocation.SourceAssembly)] 

enfoque alternativo para hacer esto es (que también he notado en algunos controles) -

public IntegerUpDown() 
{ 
    DefaultStyleKey = typeof(IntegerUpDown); 
} 

Me gustaría saber los pros y los contras de estos dos enfoques y cuál preferir?

Respuesta

3

Puedo observar que el primer enfoque le pide al marco de propiedad de la dependencia que registre una clave de estilo predeterminada. Lo hace solo una vez (estando en un constructor estático) y luego se usa para todas las instancias de IntegerUpDown. El segundo enfoque asigna la clave explícitamente cuando se crea una instancia de IntegerUpDown por sí misma. Ambos parecen estar bien para mí.

MSDN dice ...

metadatos se puede anular de manera que las subclases pueden ajustar un DP por anulando los metadatos de la propiedad, en lugar de por completo reimplementación de la propiedad en sí.

Cuestiones relacionadas