我正在学习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元素中的数据同步(并编辑)?
答案 0 :(得分:0)
考虑绑定到所选列表项的实际DataContext的属性。 我不使用SelectedValue,因为我不确定它的用途。 由于我对使用该特定属性的无知,我只依赖于SelectedItem。 然后,我可以指定要绑定到的属性名称相对于所选列表项的DataContext。
<TextBox Text="{Binding ElementName=AccountsDisplay, Path=SelectedItem.Username}"/>