Вы можете установить для свойства CanUserAddRows
DataGrid
значение false
и самостоятельно обработать добавление "новой" пустой строки.Всякий раз, когда вы хотите новую строку, вы должны добавить «пустой» объект без каких-либо свойств, установленных на нем, в вашу ObservableCollection<T>
исходную коллекцию.
Трудная часть, которую нужно выяснить, вероятно, , когда добавить строку.Например, вы можете сделать это, когда пользователь устанавливает свойство последнего элемента в вашей исходной коллекции.
Если тип T
реализует интерфейс INotifyPropertyChanged
, вы можете подписаться на событие PropertyChanged
каждый элемент, который добавляется в исходную коллекцию, и проверьте, нужно ли добавлять новый элемент в обработчик событий, например:
private void OnItemPropertyChanged(object sender, PropertyChangedEventArgs e)
{
var dirtyItem = sender as T;
if (dirtyItem != null && sourceCollection.LastOrDefault() == dirtyItem)
{
T newRow = new T();
newRow.PropertyChanged += OnItemPropertyChanged;
sourceCollection.Add(t);
}
}