es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

C# / WPF: ¿Cómo puedo crear de manera programática tantos TextBlocks como sea necesario para mostrar los datos de una tabla?

Estoy intentando llenar un combobox con textblocks que contienen valores de una tabla.

Me gustaría crear tantos textblocks como filas haya en el conjunto de datarows devueltos por la selección.

Luego agregar esos textblocks al combobox.

¿Alguien puede decirme cómo se puede hacer esto, por favor?

Aquí está mi código:

// en lugar de hacer esto, preferiría crearlos según sea necesario.
TextBlock tbx1 = new TextBlock();
TextBlock tbx2 = new TextBlock();
TextBlock tbx3 = new TextBlock();

// Obtener todas las categorías 1
DataRow[] cutProblemsRow = gediDataSet.CutProblems.Select(“CutProbCategId=” + 1);

// Si hay algún registro
if (cutProblemsRow.Length > 0)
{
// crear tantos textblocks como filas haya aquí

// ciclo entre las filas
for (int i = 0; i < cutProblemsRow.Count(); i++)
{
    // Asignar valor al textblock
    TextBlock.Text = cutProblemsRow[i]["Problem"].ToString(); 
}                

}

// Agregar los textblocks creados al ComboBox
cmbxProblem.Items.Add(tbx1);
cmbxProblem.Items.Add(tbx2);
cmbxProblem.Items.Add(tbx3);

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para crear y agregar dinámicamente TextBlocks a un ComboBox basado en las filas de una tabla, puedes seguir los siguientes pasos:

    1. Elimina los TextBlocks codificados en duro del código.
    2. Dentro del bucle for, crea una nueva instancia de TextBlock y establece su propiedad Text con el valor de cada fila.

    3. Agrega el TextBlock recién creado a la colección Items del ComboBox utilizando el método Add.

    Aquí está el código modificado:

    // Obtener todas las categorías 1
    DataRow[] cutProblemsRow = gediDataSet.CutProblems.Select("CutProbCategId= " + 1);
    
    // Si hay algún registro
    if (cutProblemsRow.Length > 0)
    {
        // Ciclo entre las filas
        for (int i = 0; i < cutProblemsRow.Count(); i++)
        {
            // Crear un nuevo TextBlock y asignar el valor a su propiedad Text
            TextBlock tbx = new TextBlock();
            tbx.Text = cutProblemsRow[i]["Problem"].ToString();
    
            // Agregar el nuevo TextBlock a la colección Items del ComboBox
            cmbxProblem.Items.Add(tbx);
        }
    }
    

    Este código creará tantos TextBlocks como filas haya en el array cutProblemsRow, establecerá su propiedad Text con los valores de las filas correspondientes y los agregará a la colección Items del ComboBox.

Comments are closed.