我正在尝试制作一个简单的表单,其中包含从我的项目中的数据库中提取的文本框。我在 xsd 文件中使用表适配器的 GetData() 方法来填充数据上下文。我想更新这些文本框之一并将更改反射(reflect)在数据库中。文本框填充得很好,但更改不会返回到数据库。
我在窗口类的构造函数中有这段代码
table = adapter.GetData();
this.DataContext = table;
在 xaml 中,我绑定(bind)到一个列表框
<ListBox Name="lstItems" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=name, Mode=TwoWay,
UpdateSourceTrigger=LostFocus}">
</TextBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我已经搞乱这个有一段时间了,但就是无法理解。看起来应该是相当简单的。我是否错误地假设 wpf 甚至可以进行这种类型的数据绑定(bind)?如果您还需要了解其他信息,请告诉我。谢谢。
最佳答案
adapter.GetData()
将返回一个包含数据库数据的 DataSet
。 此数据集与您的数据库分离,即对数据集所做的更改不会自动传播回数据库。
要将更改保存回数据库,您可以使用 Update
method of your DataAdapter .
所以,事实上,您的问题与 WPF 无关:这只是通过 ADO.NET 数据适配器访问数据库的工作原理。
关于WPF TextBox不会更新源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3973443/