чтобы перейти от шаблона редактирования ячейки обратно к шаблону ячейки:
лизовал 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) при изменении значения ячейки. Например, у меня есть поле со списком в ячейке, когда в режиме редактирования. Когда пользователь выбирает значение в выпадающем списке, оно автоматически связывает выбранное значение с данными. Но затем пользователю все равно нужно нажать Enter, чтобы выйти из режима редактирования. Как я могу выйти из режима редактирования автоматически?
Я попытался прослушать изменения свойств и вызвать функцию CommitEdit DataGrid для автоматического выхода из режима редактирования. Прекрасно работает, и вот код:
void _gameCompareViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "End Edit")
{
AlignGrid.CommitEdit();
}
}
Но теперь функция редактирования в один клик не будет работать для текущей ячейки. Я должен сначала щелкнуть по другой строке, чтобы она заработала. Я думаю, что я хочу, чтобы при вызове CommmitEdit он автоматически выбирал другую строку. (Например, когда вы нажмете Enter, он перейдет к следующему ряду) Есть предложения, ребята? Пожалуйста, покажите мне коды, как это сделать. У меня заканчивается время для моего проекта.
Спасибо за помощь.