我如何能實現在.NET 4的DataGrid以下任何想法:刪除單元格內容時刪除鍵被按下
private void grid_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Delete)
{
DataGridCell cell = e.OriginalSource as DataGridCell;
if (cell == null) { return; }
if (!cell.IsReadOnly && cell.IsEnabled)
{
// Set the cell content (and the property of the object binded to it)
// to null
}
}
}
這種行爲應該與任何細胞工作,所以我不不想硬編碼列或屬性名稱。
編輯:解決方案,我想出了:
if (e.Key == Key.Delete)
{
DataGridCell cell = e.OriginalSource as DataGridCell;
if (cell == null) { return; }
if (!cell.IsReadOnly && cell.IsEnabled)
{
TextBlock tb = cell.Content as TextBlock;
if (tb != null)
{
Binding binding = BindingOperations.GetBinding(tb, TextBlock.TextProperty);
if (binding == null) { return; }
BindingExpression exp = BindingOperations.GetBindingExpression(tb, TextBlock.TextProperty);
PropertyInfo info = exp.DataItem.GetType().GetProperty(binding.Path.Path);
if (info == null) { return; }
info.SetValue(exp.DataItem, null, null);
}
}
}