强制WPF在聚焦元素上提交更改

时间:2010-04-15 13:46:47

标签: wpf entity-framework data-binding visual-studio-2010 commit

我正在使用VS2010,WPF和EF。我通过从Data Sources工具窗口中拖出一个实体来将控件放在我的窗口上。我使用了“详细信息”设置,因此我的实体由多个标签和文本框表示。我还添加了一个包含以下代码的按钮:

_context.SaveChanges();

当我编辑数据时,无论哪个文本框具有焦点的更改都不会提交回数据库。其他一切都很好。如果我在点击保存按钮之前将焦点转移到另一个元素,它也会提交。我对DataGrid经历了同样的事情。

我知道我错过了一些简单的东西,但我可以弄清楚。关于我缺少的任何想法?

谢谢!

2 个答案:

答案 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();