2009-08-04 19 views
7

He leído en un blog la siguiente frase:WPF herencia de control

La primera regla de WPF: la herencia de control
Evitar.

He visto cosas similares en otros lugares también. Sin embargo, no entiendo la lógica.

Además, veo sugerencias aquí en StackOverflow que implica heredar controles WPF (ver las respuestas a mi pregunta previous por ejemplo).

Me gustaría entender por qué (y si) se debe evitar la herencia de control.

Respuesta

8

Los controles WPF son "impensados". En otras palabras, su aspecto está separado de su comportamiento. En la mayoría de los casos, realmente desea personalizar el aspecto, no el comportamiento. A diferencia del mundo de Winforms, esto no requiere que usted herede un nuevo control y anule la lógica de representación. En su lugar, establece algunas propiedades en el control, recurriendo a anular la plantilla si no puede obtener el aspecto que desea de otras propiedades.

Tenga en cuenta que "evitar" significa exactamente eso. Evite la herencia si puede. En los casos en que necesita modificar el comportamiento, la herencia puede ser la mejor opción.

4

El blog desde el enlace también se afirma en el extremo que:

"con estilos, plantillas, decoradores y unidos propiedades y comportamientos que pueden lograr la mayor parte de las cosas que antes tenían que rodar una nuevo control para. "

Eso es cierto. Sin embargo, si fuera siempre cierto, el equipo wpftoolkit no habría hecho su DataGrid como una subclase de MultiSelector.

Juzgue cada caso por separado, diría yo. También verifique this respuesta.