No puede hacerlo de esta manera.
Para lograr ese tipo de truco, necesitaría que sus artículos sean "clases de soporte" que expongan una propiedad a la que puede enlazar su cuadro de texto.
Para entenderlo, imaginemos la siguiente secuencia seudo de llamadas:
class ListBox
{
Bind(Items)
{
foreach(var item in Items)
{
DataTemplate Template = LoadTemplateForItem(item.GetType()); // this is where your template get loaded
Template.Bind(item); //this is where your template gets bound
}
}
}
Su plantilla (DataTemplate con el cuadro de lista) se carga y el elemento (que supongo es una cadena en su caso) se transfieren in. En este punto, solo conoce la cadena y no puede influir en nada hacia arriba. Una vinculación bidireccional no puede influir en la recopilación porque la plantilla no sabe en qué contexto se está utilizando, por lo que no puede volver a la colección original y modificar su contenido. Para el caso, esto es lo mismo para TextBox. Si no se le da un conainer y un nombre de propiedad, no tiene ningún lugar donde "almacenar" los cambios. Esto básicamente es lo mismo que pasar una cadena a una llamada de función. La función no puede cambiar qué cadena se pasó (ignorando trucos como el paso del argumento de referencia).
Para volver a su caso, es necesario construir una colección de objetos que exponen una propiedad que contiene el valor que necesita ser editado:
public class MyDataItem
{
string Data { get; set;}
}
Entonces se puede vincular a su ListBox a una colección de los elementos y modifiy su datatemplate:
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="EditableText" Text="{Binding Data, Mode=TwoWay}"/>
</DataTemplate>
</ListBox.ItemTemplate>
Tengo un problema similar, pero como soy muy nuevo con WPF no sé cómo escribir {Datos de enlace, Modo = TwoWay} si tengo una lista de cadenas y no hay una propiedad real que pueda vincularse –
Usted no puedo, ese es el punto de mi respuesta ... Necesita tomar su lista de cadenas, crear una lista de objetos que contengan esas cadenas (cada objeto contiene una cadena, accesible a través de una propiedad), y mostrar esa lista secundaria en el ListBox . –