En mi proyecto WPF, tengo un ListBox que muestra elementos de una colección List<string>
. Quería que el texto de estos elementos fuera editable, así que envolví cada uno de ellos en una ItemTemplate con un TextBox (podría no ser la mejor manera, pero soy nuevo en WPF). Estaba teniendo problemas simplemente vinculando la propiedad TextBoxes 'Text al valor de cada elemento. Finalmente me encontré con un ejemplo usando un solo punto o el plazo de su propiedad Path ({Binding Path=.}
):Son "{Binding Path =.}" Y "{Binding}" realmente iguales
<ListBox ItemsSource="{Binding ElementName=recipesListbox,Path=SelectedItem.Steps}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=.}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Sin embargo, yo no entiendo por qué el simple uso de {Binding}
no funcionó.
Se planteó una "dos vías de unión requiere Ruta o XPath" excepción, ya que according to Microsoft: (.)
[...] un período de ruta se puede usar para unirse a la corriente fuente. Por ejemplo, Text = "{Binding}" es equivalente al texto = "{Binding Path =.}"
Podría alguien arrojar luz sobre este comportamiento ambiguo?
EDIT: Por otra parte, parece {Binding Path=.}
no necesariamente para obtener una de dos vías de unión, como modificar el texto y mover el foco no se actualiza la fuente subyacente (la misma fuente tiene también propiedades visualiza y se modificó con éxito en una cuadrícula de datos controlar). Definitivamente me falta algo aquí.
Eso fue un error tipográfico, está arreglado ahora. – Fueled
Pero el enlace bidireccional TODAVÍA falla. Se niega a guardar los cambios. Si tiene un ObsColl y hacer Path =. Modo = enlace de dos vías, que se agrega a la colección funciona bien. Cambiar el número en el índice 0, por ejemplo, no. Si enlaza una cuadrícula de datos con ella y especifica un datagridtextcolumn, se rehúsa a guardar con Path =. –
user99999991