我有一个带有几个TextBox的WPF窗口。
我有一个附加到SQL Server数据库的XSD数据集,窗口绑定到tableadapter中的一行:
public partial class PersonForm : Window
{
public PersonForm(int id)
{
InitializeComponent();
MyDatasetTableAdapters.personTableAdapter tableAdapter =
new MyDatasetTableAdapters.personTableAdapter();
personRow row = tableAdapter.GetPersonById(id);
this.DataContext = row;
}
...
}
文本框的绑定方式如下:
<TextBox Name="lastName" Text="{Binding Path=lastname}" />
这些绑定绑定正常工作,文本框正确填充了SQL数据库中的数据,但是在编辑文本框时,更改不会传播回数据库。
我有一个按钮,点击后调用
myTableAdapter.Update(myRow);
这确实成功更新了SQL数据库。
我的问题是:我需要做出哪些更改才能使文本框自动更新数据库(无需显式调用TableAdapter.Update)。
另外,这是在WPF中将表单绑定到数据库的正确方法吗?
答案 0 :(得分:0)
我发现了一种方法来实现这一目标。
通过在文本框绑定上将 NotifyOnSourceUpdated 属性设置为True,如下所示:
<TextBox Name="lastName" Text="{Binding Path=lastname, NotifyOnSourceUpdated=True}" />
然后我可以在Window的SourceUpdated事件中更新表适配器,如下所示:
private void Window_SourceUpdated(object sender, DataTransferEventArgs e)
{
myTableAdapter.Update(myRow);
}
这似乎运作良好。有没有更好的方法来实现这一目标?
有没有办法在所有文本框上轻松启用 NotifyOnSourceUpdated ,而无需在每个TextBox上指定它?