我有一个WPF数据网格,它使用绑定到对象列表。该对象具有Name属性,用户应该能够更改,默认值为"在此处添加名称"。
我需要实现的行为是:当用户点击它时清除单元格,然后如果用户将其留空,则返回默认值。
我有一个允许用户单击编辑的功能,可以正常清除单元格(下面的部分代码)。我不能做的就是在这里添加名称"如果单元格失去焦点,则将文本返回到单元格中。
我觉得我已经尝试过在Google上找到的所有内容。我已经尝试过验证器,我设置了值="在这里添加名称"如果value == null,但这不起作用。此外,关于下面的代码的一些事情阻止验证器工作,即使在应用默认的红色边框(我熟悉验证器,他们确实在我的代码的其他部分工作)。
我尝试使用TargetNullValue,但这并不允许单元格在任何时候都是空白的,我确实希望单元格在最初点击时是空白的。有什么想法吗?
//Allows user to click on "Name" field once to edit
private void SingleClickEdit(object sender, MouseButtonEventArgs e)
{
DataGridCell cell = sender as DataGridCell;
DataGridCellInfo cellInfo = new DataGridCellInfo(cell);
System.Reflection.PropertyInfo pi = cellInfo.Item.GetType().GetProperty("controllerName");
if (cell != null && !cell.IsEditing && !cell.IsReadOnly)
{
if (!cell.IsFocused)
{
cell.Focus();
if (pi != null)
{
pi.SetValue(cellInfo.Item, null);
}