Я пытаюсь изменить стиль (установить фон) отдельной ячейки в сетке данных (lst_DataFromDB) во время выполнения, используя значения индекса столбца и строки.
Я создал функцию, которая принимает 2входные параметры (rowNumber и colNumber).Но я сталкиваюсь с трудностями при нацеливании на одну ячейку, стиль применяется ко всему столбцу или ко всем строкам.
Ниже мой прогресс -
private void getCellData(int rowNumber, int colNumber)
{
for (int i = 0; i < lst_DataFromDB.Items.Count; i++)
{
int j = 0;
foreach (DataGridColumn column in lst_DataFromDB.Columns)
{
if (rowNumber == i & colNumber == j)
{
DataGridRow row = (DataGridRow)lst_DataFromDB.ItemContainerGenerator.ContainerFromIndex(i);
TextBlock cellContent = column.GetCellContent(row) as TextBlock;
string texter = (cellContent.Text); //<--I'm able to fetch the cell text here, so I am targeting the required cell.
//METHOD 1:
StringReader stringReader = new StringReader("<Style xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" TargetType=\"{x:Type DataGridCell}\"> <Setter Property=\"Background\" Value=\"Red\"></Setter></Style>");
XmlReader xmlReader = XmlReader.Create(stringReader);
Style style = (Style)System.Windows.Markup.XamlReader.Load(xmlReader);
lst_DataFromDB.Columns[j].CellStyle = style; //<-- But, this highlights the entire Column
lst_DataFromDB.RowBackground = Brushes.YellowGreen; //<-- But, this highlights all the rows in the grid
//METHOD 2:
//***Throws an Error***
//column.CellStyle.Setters.Add(new Setter(DataGridCell.BackgroundProperty,Colors.Red));
//METHOD 3:
//***Throws an Error***
//((System.Windows.Controls.DataGridBoundColumn)column).ElementStyle.Setters.Add(new Setter(DataGridCell.BackgroundProperty, Colors.Red));
}
j++;
}
}
}
Открыт для предложений.Заранее спасибо.