при многократном задании CommandRows2.ItemsSource = items;
во втором и последующих назначениях ничего не происходит, поскольку значение (items
) не меняется, это одна и та же ссылка.
измените List<CommandGridItems> items = new List<CommandGridItems>();
на ObservableCollection<CommandGridItems> items = new ObservableCollection<CommandGridItems>();
и просто добавьте новые элементы без повторного назначения ItemsSource:
private void ExecuteSingleCommand(object sender, RoutedEventArgs e)
{
string sshCommand = "hostname";
string returnedResults = "localhost";
var element = new CommandGridItems() { Delete = false, Command = sshCommand, Response = returnedResults, Results = "desc1" }
items.Add(element);
}
Один добавленный элемент будет показан в DataGrid, потому что ObservableCollection уведомляет об изменении элементов через INotifyCollectionChanged
событие интерфейса (CollectionChanged
), в то время как вызов Refresh
в этой ситуации является падением производительности.
INotifyCollectionChanged
и INotifyPropertyChanged
являются обязательными в WPF для уведомления пользовательского интерфейса об изменениях в ViewModel