单击时,WPF Datagrid单元格为空白,如果失去焦点,则为默认值

时间:2015-03-12 16:08:48

标签: wpf datagrid

我有一个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);
                }

0 个答案:

没有答案