Измените фон DataGridCell из CodeBehind в Silverlight 4
-
27-10-2019 - |
Вопрос
Я пишу приложение 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);
}
}
}
}
}
}