Como tornar o ListBox editável quando vinculado a uma List <string>?

Edita: O problema básico é vincular uma lista à caixa de listagem (ou qualquer outro controle). Então, eu estou editando a pergunta.

Vinculei uma lista de cadeias de caracteres a um ListBox como abaixo. No entanto, quando altero o conteúdo da caixa de texto, ele não altera a string na lista de fonte

  public partial class MainWindow : Window
{
    List<string> _nameList = null;

    public List<string> NameList
    {
        get
        {
            if (_nameList == null)
            {
                _nameList = new List<string>();
            }
            return _nameList;
        }
        set
        {
            _nameList = value;
        }
    }
    public MainWindow()
    {
        NameList.Add("test1");
        NameList.Add("test2");
        InitializeComponent();
    }

E o XAML

 <ListBox Grid.Row="0" Grid.Column="0" DataContext="{Binding ElementName=main}" ItemsSource="{Binding NameList}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBox Text="{Binding .,Mode=OneWayToSource ,  UpdateSourceTrigger=PropertyChanged}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

questionAnswers(4)

yourAnswerToTheQuestion