【发布时间】:2019-08-08 08:09:59
【问题描述】:
我有一个 ComboBox 显示人员,TextBox 用于名字,TextBox 用于姓氏,Button 用于保存输入的数据。用户可以在TextBoxes 中输入他想要的任何内容,当他单击“保存”按钮时,TextBoxes 的内容应保存到当前选定的人。
这就是我的TextBoxes 在 XAML 中的样子:
<Grid>
<Combobox x:Name="cbPerson" ItemsSource={Binding Source={StaticResource collection_people}
SelectedValue={Binding Path=Firstname} DisplayMemberPath={Binding Path=Firstname}
SelectedValuePath={Binding Path=Firstname}/>
<Textbox x:Name="tbFirstname" Text="{Binding Path=name, Mode=TwoWay,
UpdateSourceTrigger=Explicit}}" Width="Auto"/>
<Textbox x:Name="tbLastname" Text="{Binding Path=name, Mode=TwoWay,
UpdateSourceTrigger=Explicit}}" Width="Auto">
</Grid>
这就是我的Button 函数的样子:
private void btnSave_Click(object sender, RoutedEventArgs e)
{
tbFirstname.GetBindingExpression(TextBox.TextProperty).UpdateSource();
tbLastname.GetBindingExpression(TextBox.TextProperty).UpdateSource();
}
在我的 Person 类中,我实现了 INotifyPropertyChanged 接口,以使 TwoWay 绑定起作用。
当我从ComboBox 中选择一个项目时,TextBoxes 会填充相应的数据。然后我可以编辑TextBoxes 并通过按保存按钮将数据保存到对象中。除了一件事,一切都如你所愿:
例如,当我从ComboBox 中选择“Paul”并将名字TextBox 的文本从“Paul”更改为“Leo”,然后从@ 中选择另一个项目987654337@ 不点击保存按钮,对象之前的对象(“Paul”)仍然会更新。
为什么会这样,我该如何解决?我没有成功找到与此问题相关的内容。
【问题讨论】:
-
Text={Binding="{Binding ...是错字吗?你的意思是Text="{Binding ...? -
是的,一个错字。更新了,谢谢
标签: c# wpf xaml combobox binding