Pregunta

Estoy escribiendo una aplicación Silverlight que le permite analizar el texto copiado a través de delimitadores ingresados. Después de que los datos se analizan y se caigan en la cuadrícula, el usuario tiene la capacidad de "fregar" los datos. Esto compara el valor actual de una celda con los valores permitidos para la columna, elige su mejor suposición y se reúne los datos a la cuadrícula a través de la propiedad de elementos.

Mi problema es que conozco las coordenadas de cada celda que se ha "fregado", y me gustaría resaltar esta celda o cambiar su color de fondo. Por lo que puedo ver, puede configurar los antecedentes de DataGridcell individualmente, pero no tengo forma de acceder a DataGridcell. Tengo acceso a las columnas y filas de la cuadrícula, pero tampoco parecen dar acceso a DataGridcell como esperaba. ¿Alguien tiene una forma de acceder a una copa de datos después de que se haya establecido el elemento en el que se ha establecido?

¿Fue útil?

Solución

Si está atravesando la colección de su elemento que STOURCE está obligado, puede tomar cada fila y pasar por las columnas obteniendo el contenido y la celda, algo como esto (truco es el contenido. Parent como DataGridcell):

var collection = grid.ItemsSource;
foreach (var dataItem in collection)
{
  foreach (var col in grid.Columns)
  {
    var content = col.GetCellContent(dataItem);
    if (content != null)
    {
        DataGridCell cell = content.Parent as DataGridCell;
        // do whatever you need to do with the cell like setting cell.Background 
    }
  }
}

Otros consejos

Este código es útil para cambiar el color de la celda.

void datagrid_LoadingRow()
    {

        var collection = datagrid.ItemsSource;
        foreach (var dataItem in collection)
        {
            foreach (var col in datagrid.Columns)
            {
                var content1 = col.GetCellContent(dataItem);
                if (content1 != null)
                {
                    TextBlock block = content1 as TextBlock;
                    if (block != null)
                    {
                        DataGridCell cell = content1.Parent as DataGridCell;

                        string cellText = block.Text;
                        if (cellText == "True")
                        {
                            cell.Background = new SolidColorBrush(Colors.Green);
                        }
                        if (cellText == "False")
                        {
                            cell.Background = new SolidColorBrush(Colors.Red);
                        }                            
                    }


                }                  

            }
        }
    } 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top