2009-12-22 15 views
5

En nuestro trabajo, tenemos una controversia en la que algunas personas desean crear controles de usuario que combinen controles usados ​​frecuentemente como una etiqueta y un cuadro de texto, o una etiqueta y un control de imagen. Es decir, algo como esto:Cuándo debe extraer un UserControl en WPF

<StackPanel Orientation="Horizontal"> 
    <Image Source="/Someimage/Somewhere.gif"/> 
    <Label>Some text, hyperlink, or other content</Label> 
</StackPanel> 

y utilizar de esta manera

<ImageLabel 
    HeaderImageSource="/Someimage/Somewhere.gif" 
> 
    Some text, hyperlink, or other content 
</ImageLabel> 

La pregunta es si ellos están proporcionando suficiente encapsulación y la abstracción como para merecer un control de usuario por separado?

Respuesta

3

Sí, en mi opinión, esto es suficiente para crear un control de usuario independiente, si forman un componente lógico en su contexto. En el proyecto en el que estoy trabajando, creamos controles de usuario si hemos agrupado componentes como este que queremos reutilizar.

El principal beneficio es que obtiene el control de la estructura y el estilo del componente. Considere el caso en el que desea hacer un cambio en alguna parte. P.ej. agregue un borde alrededor de la imagen o agregue un poco de estilo a su etiqueta. No desea explorar el código para encontrar todas las ocurrencias de su grupo repetido de componentes. En su lugar, desea actualizar solo este lugar, es decir, en el componente personalizado que ha separado.

Otra ventaja es si desea vincular los componentes al mismo objeto. Entonces puede vincular su ImageLabel al objeto en su lugar, y sus componentes se pueden unir directamente a las propiedades dentro de este objeto de una manera agradable y limpia.

Nota: Supongo que realmente desea reutilizar este componente y desea que se organice y se diseñe de la misma manera en toda la aplicación. Nunca crearía un control de usuario tan simple para usarlo solo una vez.

+1

¿no deberían los estilos hacer eso? –

+0

Sí, puede usar estilos para asegurarse de que los componentes individuales se vean iguales, pero debe recordar actualizar la referencia de estilo para cada componente. Si realmente desea que se vean iguales donde sea que se utilicen, como un componente lógico, debe convertirlo en un control de usuario. Si, por ejemplo, cambie el estilo en su etiqueta, pero olvide actualizarlo una vez que tenga una ocurrencia de este "componente" que se ve diferente a los demás. Me parece más limpio construir componentes separados. Pero otra vez; si en realidad están ligados lógicamente de alguna manera. – stiank81

+0

el control se propone como una solución genérica para el lugar donde se debe usar una imagen con una etiqueta –

2

Parece un poco exagerado para crear un UserControl para tres controles; Consideraría si me ahorró tiempo y esfuerzo o no en lugar de encapsulación/abstracción.

Cuestiones relacionadas