我正在使用VS2010,WPF和EF。我通过从Data Sources工具窗口中拖出一个实体来将控件放在我的窗口上。我使用了“详细信息”设置,因此我的实体由多个标签和文本框表示。我还添加了一个包含以下代码的按钮:
_context.SaveChanges();
当我编辑数据时,无论哪个文本框具有焦点的更改都不会提交回数据库。其他一切都很好。如果我在点击保存按钮之前将焦点转移到另一个元素,它也会提交。我对DataGrid经历了同样的事情。
我知道我错过了一些简单的东西,但我可以弄清楚。关于我缺少的任何想法?
谢谢!
答案 0 :(得分:12)
这是因为TextBox的默认Binding UpdateSourceTrigger是LostFocus。如果修改所有Bindings以将其设置为PropertyChanged,它将按预期工作:
<TextBox Text="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged}" />
答案 1 :(得分:3)
我在尝试以编程方式设置数据绑定TextBox的值时遇到了同样的问题,但是Abe的建议对我们的设置不起作用(它导致了一些不稳定的验证行为)。
以下是我如何使用它:
TextBox tb = (TextBox)this.FindName("TargetTextBox");
tb.Text = "1234";
tb.GetBindingExpression(TextBox.TextProperty).UpdateSource();