Как правильно сделать привязку данных в wpf?
ObservableCollection уведомляет о изменении своих элементов. Но и каждый элемент должен уведомлять о своем изменении, если у него меняются поля (вот тут и может пригодиться INotifyPropertyChanged)
Как выше INotifyPropertyChanged, либо ObservableCollection, который в свою очередь реализует INotifyPropertyChanged. Ну и в binding надо указать Mode=TwoWay.

Еще такой момент, если используется ObservableCollection, то в данном случае публичным есть только событие CollectionChanged, вы получите перерисовку всего ListView, если же у вас будет пара тысяч строк, вы получите неслабый такой тормоз, тут надо будет использовать виртуальность. Но так как это всё же ListView, то INotifyPropertyChanged вам ничем не поможет.