如何使TextBox更新其源ListBox的SelectedValue(没有代码隐藏?)

时间:2014-08-20 19:15:14

标签: wpf xaml

我正在学习WPF,我真的想要深入研究绑定,直到我能像老板那样做。但我有一点问题。

在xaml中,我有一个像这样的ListBox:

<ListBox Name="AccountsDisplay"
    SelectedValuePath="Username"
    IsSynchronizedWithCurrentItem="True"
    ItemsSource="{Binding Accounts}"
    />

我有一个TextBox,它从所述ListBox中提取“用户名”。

<TextBox Text="{Binding ElementName=AccountsDisplay, Path=SelectedValue}"/>

注意:帐户是一个ObservableCollection,添加到它的所有对象都是Account类型,它纯粹是一个扩展INotifyPropertyChanged的数据类,并具有用户名,密码等属性。 / p>

TextBox正在正确地提取Username属性,并在我更改ListBox中的选择时更新(按照预期填充了漂亮的lil'帐户信息条目),但我无法单击TextBox并尝试更新ListBox中条目的用户名部分。

我的直觉告诉我,我正在以错误的方式使用这个TextBox,因为我将无法创建其他TextBox并拉出任何其他帐户属性(感谢SelectedValuePath已经有一个值),但我也是WPF&amp; XAML以我的方式查看错误的位置!

我是在咆哮正确的树,还是有更合适的方法让TextBox与另一个UI元素中的数据同步(并编辑)?

1 个答案:

答案 0 :(得分:0)

考虑绑定到所选列表项的实际DataContext的属性。 我不使用SelectedValue,因为我不确定它的用途。 由于我对使用该特定属性的无知,我只依赖于SelectedItem。 然后,我可以指定要绑定到的属性名称相对于所选列表项的DataContext。

<TextBox Text="{Binding ElementName=AccountsDisplay, Path=SelectedItem.Username}"/>