WPF TextBox不会更新源

标签 wpf data-binding ado.net xsd dataset

我正在尝试制作一个简单的表单,其中包含从我的项目中的数据库中提取的文本框。我在 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/

相关文章:

C# DataGridView 捕获删除的行

wpf - 重构 DataTemplate (XAML) 以减少重复

wpf - 如何使用枚举器控制 XAML 中的角色/权限

安卓 : Difference between DataBinding and ViewBinding

WPF Datagrid 在禁用控件时取消选择行

c# - 将文本绑定(bind)到组合框中的选定项目

c# - 避免 DataTable 查询和构建中的重复

c# - SQL 注入(inject)的 OData 问题

.net - 在覆盖 WPF 中制作透明孔

c# - 如何从 ViewModel 正确执行异步方法?