【发布时间】:2018-06-05 23:53:46
【问题描述】:
我有一个 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 时才会发生这种情况。有没有办法在不禁用它的情况下做到这一点,或者这是正确的方法?
【问题讨论】: