Технология WPF волшебным образом не обновляет цель при каждом изменении источника.Он поддерживает обновление пользовательского интерфейса с помощью некоторых механизмов уведомлений, таких как DependencyObject
, INotifyPropertyChanged
или INotifyCollectionChanged
.
Тип данных, используемый для сбора (List<>
), не имеет механизма уведомлений.Таким образом, пользовательский интерфейс обновляется только один раз при его создании, и никогда больше, поэтому вы видите, что элемент журнала добавляется только при первом переходе на вторую вкладку.
(не рекомендуется) Вы можете сделать это для ручного сбросаItemsSource каждый раз, когда в него вносятся изменения.Однако он всегда будет заново создавать все элементы пользовательского интерфейса в визуальном дереве ItemsControl.
private void SingleStep(object sender, RoutedEventArgs e)
{
list.Add("STEP");
LogList.ItemsSource = null;
LogList.ItemsSource = list;
}
(рекомендуется) Вы можете реализовать привязку для вашего ItemsSource с помощью ObservableCollection
- который реализует INotifyCollectionChanged
-следующим образом:
ObservableCollection<string> _list = new ObservableCollection<string>();
public ObservableCollection<string> list { get { return _list; } }
Обратите внимание, что ObservableCollection
автоматически уведомляет цель о любых изменениях, сделанных в коллекции.