Вопрос

Я пишу приложение Silverlight, которое позволяет вам разобрать копированный текст через введенные делиминации. После того, как данные проанализированы и падают в сетку, пользователь обладает возможностью «чистить» данные. Это сравнивает текущее значение ячейки с разрешенными значениями для столбца, выбирает свое лучшее предположение и переживает данные в сетку через свойство элементов.

Моя проблема заключается в том, что я знаю координаты каждой ячейки, которая была «очищена», и я хотел бы выделить эту ячейку или изменить его цвет фона. Насколько я вижу, вы можете установить фон DataGridCell индивидуально, но у меня нет возможности получить доступ к DataGridCell. У меня есть доступ к столбцам и рядам сетки, но они также, по -видимому, не дают доступа к DataGridCell, как я надеялся. У кого -нибудь есть способ получить доступ к 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 
    }
  }
}

Другие советы

Этот код полезен для изменения цвета ячейки.

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);
                        }                            
                    }


                }                  

            }
        }
    } 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top