2010-12-26 40 views
8

Estoy agregando Tabitems dinámicamente a un control de pestañas en tiempo de ejecución (en C#) y eso funciona bien, pero ¿cómo puedo agregar dinámicamente controles a los nuevos Tabitems? Los Tabitem deben ser dinámicos porque dependen de cuántas filas de datos se leen desde una base de datos. El diseño de cada Tabitem será idéntico. GraciasWPF - ¿Agregar controles dinámicos a Tabitem agregado dinámicamente?

Respuesta

2

El TabItem es un control de contenido, por lo que acaba de establecer su propiedad Content ser cualquier tipo de elemento que desea visualizar (por ejemplo, una cuadrícula que contiene otros elementos, etc.)

4

utilizar la propiedad Content de la nueva TabItem, allí se puede fijar cualquier cosa, como cuerdas u otros controles de WPF:

private void AddChildControl(TabItem tabItem) 
{ 
    StackPanel newChild = new StackPanel(); 
    tabItem.Content = newChild; 
} 
10

Si cada TabItem va a tener el mismo diseño me basta con crear una UserControl que abarca lo que necesita de un diseño y control de la postura y luego lugar que dentro de la propiedad TabItem.Content.

A continuación, puede pasar los datos a través de la representación del objeto a la propiedad TabItem.DataContext para iniciar y hacer uso del enlace.

TabItem item = new TabItem(); 
item.Content = new CustomUserControl(); 
item.DataContext = data; //where data is the data that 
         //comes from the database 
         //being represented in object form 
+0

Gracias, estoy empezando a hacer algunos progresos ahora. Entonces, si mi usercontrol contiene, por ejemplo, varios controles, ¿está diciendo que puedo pasar los datos 'todo de una vez' al TabItem empaquetando los datos en un objeto? Presumiblemente, ¿el control de uso podría contener un método para hacer exactamente lo que yo podría llamar? –

+0

@Paul En muchas palabras, sí. En su UserControl, puede utilizar DataBinding, ya que cuando configura el DataContext del TabItem, caerá en cascada. Luego, en UserControl, sus controles pueden vincularse a los datos dentro de DataContext. –

+0

Muchas gracias Aaron por toda su ayuda, solo una pregunta más, cada tabitem es idéntico pero no estoy seguro de cuál es el mejor control para usar. En cada pestaña, necesito mostrar 'filas' que representen cada fila leída desde una base de datos. Cada fila de datos consta de 3 campos de texto, un booleano y un entero en el rango 1-4 que representa una de 4 posibles imágenes. Necesito mostrar el texto, el valor booleano, (en una casilla de verificación) y la imagen correspondiente con algún control adecuado para cambiarlo. ¿Podría hacer esto de alguna manera con una cuadrícula de datos? –

Cuestiones relacionadas