使用DataTemplate的ListBox的WPF TwoWay绑定

Pam*_*sse 3 wpf xaml binding listbox datatemplate

可能重复:
如何在绑定到List <string>时使ListBox可编辑?

我正在尝试在名为"ListStr"对象的List和ListBox WPF控件之间设置两个绑定.此外我希望这些项目是可编辑的,所以我添加了一个带有TextBoxes的DataTemplate,期望它可以通过TextBoxes直接修改ListStr项目.

但是当我试图编辑其中一个时,它不起作用......

任何的想法 ?

PS:我试图添加Mode = TwoWay参数,但它仍然无效

这是XAML:

<ListBox ItemsSource="{Binding Path=ListStr}" Style="{DynamicResource ResourceKey=stlItemTextContentListBoxEdit}" />
Run Code Online (Sandbox Code Playgroud)

这是样式代码:

<Style x:Key="stlItemTextContentListBoxEdit" TargetType="{x:Type ListBox}">
<Setter Property="Background" Value="#FF0F2592" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Height" Value="150" />
<Setter Property="Width" Value="200" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="ItemTemplate" Value="{DynamicResource ResourceKey=dtplItemTextContentListBoxEdit}" /></Style>
Run Code Online (Sandbox Code Playgroud)

和DataTemplate:

<DataTemplate x:Key="dtplItemTextContentListBoxEdit">
    <TextBox Text="{Binding Path=.}" Width="175" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

Cod*_*ked 8

当你使用时,双向绑定不起作用{Binding Path=.}(这很长{Binding}).请记住发生的事情.

ListBox被赋予对象的列表,它然后创建一个ListBoxItem每个项目.所述DataContextListBoxItem然后被设置到该对象.当你使用时{Binding},你只是想使用中的对象DataContext.当您键入TextBox时,它会更新什么?它无法设置DataContext,也不知道对象的来源(因此无法更新列表/数组).

双向绑定确实有效的方法是绑定到该对象上的属性.但是当你绑定到对象本身时.