¿Cómo hacer que ListBox sea editable cuando está vinculado a una List <string>?

Edita: El problema básico es vincular una Lista a ListBox (o cualquier otro control). Así que estoy editando la pregunta.

He vinculado una lista de cadenas a un ListBox como se muestra a continuación. Sin embargo, cuando cambio el contenido del cuadro de texto, no está cambiando la cadena en la lista de origen. ¿Por qué?

  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();
    }

Y el 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>

Respuestas a la pregunta(4)

Su respuesta a la pregunta