3

所以我被要求解决一个已经存在一段时间的旧 Windows 窗体实用程序的问题(至少在我的任何同事出现之前)。该表单有一个数据绑定的 numericUpDown 控件。问题是,当您单击向上或向下箭头时,值会更改并保存确定,但是,如果您只是输入一个数字并单击保存它不会保存。就像数据绑定从来没有看到变化,所以来自 WPF 背景我猜想改变以下

TaskDaysToComplete.DataBindings.Add("Value", taskTemplate, "DaysToComplete");

对此

TaskDaysToComplete.DataBindings.Add("Value", taskTemplate, "DaysToComplete", false, DataSourceUpdateMode.OnPropertyChanged);

会解决我的问题,它确实做到了。您现在可以输入一个数字或使用控件上的向上/向下箭头来设置“值”属性。

我的问题是,首先发生了什么?我猜默认的 DataSourceUpdateMode 是 OnValidation ,但是什么时候会发生这种情况,为什么在使用向上/向下箭头时可以,但在输入内容时似乎从未发生过。

谢谢!

4

1 回答 1

1

numericUD 验证

验证在失去焦点时完成,因此当您按下向上/向下键时,文本框失去焦点 - 触发验证例程。
编辑文本时,您可以通过单击另一个控件使控件失去焦点,这将使其生效。
默认设置为 onValidate 的原因是 on 值更改将导致它对每个键入的字符进行验证,这对于性能和正确验证都是有问题的。

于 2012-11-26T09:30:04.277 回答