У меня есть DataGrid, который я заполняю во время выполнения данными из базы данных SQLite.Когда пользователь редактирует ячейку в сетке данных, я хочу, чтобы эта ячейка изменила свой цвет фона.Итак, это код MCVE, из-за того, что я сделал:
public MainWindow()
{
InitializeComponent();
DataTable dt = new DataTable();
dt.Columns.Add("Column1");
dt.Columns.Add("Column2");
for (int i = 0; i < 100; i++)
{
var r = dt.NewRow();
r[0] = i ;
r[1] = i * i;
dt.Rows.Add(r);
}
myDataGrid.ItemsSource = dt.DefaultView;
}
private void myDataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
if (e.EditAction.ToString() == "Commit")
{
FrameworkElement element = e.Column.GetCellContent(e.Row);
(element.Parent as DataGridCell).Background = new SolidColorBrush(Colors.Yellow);
}
}
xaml:
<Grid>
<DataGrid x:Name="myDataGrid" CellEditEnding="myDataGrid_CellEditEnding"/>
</Grid>
Проблема в том, что при прокрутке я вижу другие ячейки, также окрашенные в желтый цвет.Кроме того, в зависимости от того, как я прокручиваю, желтый фон перепрыгивает с нужной ячейки на другую.Это происходит только в том случае, если для EnableRowVirtualization
установлено значение true
.Есть ли способ сделать это без отключения или это правильный способ сделать это?