2009-12-17 18 views
11

Me estoy mojando los pies en Silverlight, y realmente no entiendo las diferencias y los pros/contras de crear un UserControl vs. crear un Control para la misma tarea (como cuando haces clic derecho en una selección en Expression Mezcla, por ejemplo).¿Cuándo usar UserControl vs. Control en Silverlight?

Parece que seleccionar "Hacer en control" solo crea una nueva plantilla para el tipo de base que especifique, mientras que la creación de un UserControl crea una clase base completamente nueva. ¿Es eso correcto?

Screenshot http://tinyurl.com/yjsaox9

En este caso particular, estoy creando un control de cuadro de texto personalizado que sólo toma números, y se divide en 3 secciones, almacenar 3 valores en propiedades separadas como se muestra a continuación. En este caso particular, ¿cuál sería el mejor?

Screenshot 2 http://tinyurl.com/y9x7zox

actualización (Pregunta adicional): ¿Por qué no puedo usar la plantilla de unión con un control de usuario, pero no puedo con un control? Esa es una de las razones por las que pensé que hacer un UserControl podría no ser la decisión correcta.

Respuesta

3

Dov, creo que ha respondido su propia pregunta con su actualización. Los controles personalizados son más útiles cuando quiere hacer un control que soporte la creación de plantillas. De lo contrario, son útiles cuando hereda de otros controles para agregar funcionalidad limpiamente (TextBox -> PasswordTextBox).

+0

Sí, un control personalizado definitivamente tiene más sentido para mí. Gracias. – Dov

4

Si se tiene en cuenta el control para que sea un grupo de tres cuadros de texto a continuación, un UserControl sería apropiado, pero si su control sigue siendo esencialmente ser un TextBox entonces debería extender el control existente con "Convertir en control."

Parece que necesita un UserControl para mí.

8

UserControls están destinados a ser un control compuesto, básicamente un montón de otros "controles" agrupados para funcionar como una sola unidad cohesiva.

Los controles personalizados, por otro lado, están destinados a ser utilizados como control único. Piense en los controles básicos en el marco, como TextBox o Button: si estuviera implementando algo así, querría un Control. (Esto es menos común que UserControls, especialmente en WPF, ya que puede usar la creación de plantillas en los controles de la clase base para lograr bastantes cosas en las que necesita controles personalizados en otros marcos). Un control personalizado se trata de definir un nuevo comportamiento para un solo "control".

+0

¿Hay alguna manera de utilizar la vinculación de plantillas con un UserControl? – Dov

+1

Bueno, las plantillas para elementos individuales en el control compuesto (es decir, un TextBox recogerá una plantilla asignada a TextBoxes) se aplicarán al control de usuario (siempre que no proporcione el suyo propio), pero no obtiene el mismo nivel de soporte de tematización como lo hace con un control personalizado. –

Cuestiones relacionadas