Подтвердить что ты не робот

WPF DataGrid - как автоматически выйти из режима редактирования?

Я реализовал WPF DataGrid Редактирование одним кликом из Codeplex. В этом решении щелкнутая ячейка сфокусирована, и строка выбирается для достижения однократное редактирование DataGrid. Он отлично работал.

Здесь код:

private void DataGridCell_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        DataGridCell cell = sender as DataGridCell;
        if (cell != null && !cell.IsEditing && !cell.IsReadOnly)
        {
            if (!cell.IsFocused)
            {
                cell.Focus();
            }
            DataGrid dataGrid = FindVisualParent<DataGrid>(cell);
            if (dataGrid != null)
            {
                if (dataGrid.SelectionUnit != DataGridSelectionUnit.FullRow)
                {
                    if (!cell.IsSelected)
                        cell.IsSelected = true;
                }
                else
                {
                    DataGridRow row = FindVisualParent<DataGridRow>(cell);
                    if (row != null && !row.IsSelected)
                    {
                        row.IsSelected = true;
                    }
                }
            }
        }
    }    

Но я также хочу, чтобы мой DataGrid автоматически выходил из режима редактирования (без нажатия клавиши Enter) когда значение ячейки изменяется. Например, у меня есть поле со списком в ячейке в режиме редактирования. Когда пользователь выбирает значение в combobox, он автоматически привязывает выбранное значение. Но тогда пользователю все равно нужно нажать "Enter", чтобы выйти из режима редактирования. Как я могу выйти из режима редактирования автоматически?

Я пробовал прослушивать изменения свойств и вызывать функцию CommitEdit DataGrid для автоматического выхода из режима редактирования. Отлично работает и вот код:

 void _gameCompareViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
    {
        if (e.PropertyName == "End Edit")
        {
            AlignGrid.CommitEdit();
        }

    }

Но теперь функция редактирования Single-Click не будет работать для текущей ячейки. Сначала я должен нажать другую строку, чтобы она работала. Я думаю, что я хочу, когда вызывается CommmitEdit, он автоматически выбирает другой ряд. (Например, когда вы нажмете Enter, он перейдет к следующей строке) Любые предложения ребята? Пожалуйста, покажите мне коды о том, как это сделать. У меня заканчивается время для моего проекта.

Спасибо за помощь.

4b9b3361

Ответ 1

перевернуть шаблон редактирования ячейки обратно на шаблон ячейки:

dataGrid.CancelEdit();