Вам нужно свойство для двухстороннего связывания, поэтому строка не подходит для этого.
Оберните его в строковый объект, например:
public class Model
{
public ObservableCollection<StringObject> List { get; private set; }
public Model()
{
List = new ObservableCollection<StringObject>
{
new StringObject {Value = "why"},
new StringObject {Value = "not"},
new StringObject {Value = "these"},
};
}
}
public class StringObject
{
public string Value { get; set; }
}
и привязка к свойству Value вместо "."
Кроме того, вам не нужно уведомлять об изменении в наблюдаемой коллекции, поэтому до тех пор, пока у вашей модели не появятся другие собственные свойства, ей не нужно иметь INotifyPropertyChange. Если вы хотите, чтобы ваш ItemsControl реагировал на изменения в отдельных объектах StringObject, вам следует добавить INotifyPropertyChanged в объект StringObject.
И снова, двустороннее связывание по умолчанию, поэтому вам нужно только
<TextBox Text="{Binding Path=Value}" />
в вашем переплете.