WPF: Как всегда иметь новую строку, доступную в сетке данных? - PullRequest
0 голосов
/ 12 июня 2018

В настоящее время я использую сетку данных WPF / Xaml с ViewModel, и у меня возникла проблема с сохранением новой пустой строки внизу.Я могу указать путь или ввести свой путь, и сетка данных создаст новую строку, но пользователи хотят всегда иметь новую строку для щелчка.Есть простой способ сделать это?Я пробовал несколько способов и потерпел неудачу.

У меня есть CanUserAddRows = true и AutoGenerateColums = false, если это помогает.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Вы можете установить для свойства 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);
    }
}
0 голосов
/ 12 июня 2018

Вставьте новый элемент в коллекцию ObservableCollection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...