2009-02-22 21 views
5

Estoy confundido con aprender sobre WPF. Veo ControlTemplate usado para determinar cómo se ve cada elemento en un cuadro de lista. ¿No es eso para lo que se utiliza ItemTemplate en listboxes? ¿Cuál es la diferencia?ItemTemplate vs ControlTemplate

+0

Relacionado: [Diferencia entre Style y ControlTemplate] (http://stackoverflow.com/questions/6136200/difference-between-style-and-controltemplate) – Helen

Respuesta

10

Un ControlTemplate te permite cambiar el aspecto & sensación de controles existentes, por ejemplo, hacer un botón normal de cada día se parece a la barra de tareas botones de cristal brillante de Vista o presentar una pestaña aspecto de control como la nueva cinta de Office 2007.

La idea es que el control solo contenga el comportamiento y ControlTemplate contiene la apariencia &, por lo que un botón es "algo que hace clic" y no "un rectángulo con un efecto 3D puede hacer clic en".

Puede reemplazar la plantilla de control de ListBox para obtener algo así como un cuadro de lista con esquinas redondeadas o barras de desplazamiento personalizadas.

Una DataTemplate, por otra parte, le permite controlar cómo se muestran las filas de datos dentro de los cuadros de lista (y otros controles similares); las plantillas de datos se usan para especificar "Mostrar apellido, que una coma y el primer nombre - y el apellido debe ser negrita y el nombre debe ser verde si comienza con una A ".

Y para completar, también hay una clase ItemsPanelTemplate que se usa para cambiar el diseño interno de un cuadro de lista. El libro WPF de Charles Petzold tiene un ejemplo de usarlo para hacer que un cuadro de lista normal muestre sus elementos en un círculo.

3

Una Plantilla de elemento describe cómo representar el elemento de datos en un cuadro de lista (por ejemplo, puede tener su cuadro de lista vinculado a una Lista - ItemTemplate le permitirá especificar cómo renderizar un Foo). Un ItemTemplate es un DataTemplate.

Un ControlTemplate describe cómo el cuadro de lista en sí debe representar

+2

gracias por señalar ItemTemplate es un DataTemplate – Felix

Cuestiones relacionadas