因此,我被要求修复一个已经存在了一段时间的旧windows窗体实用程序的问题(至少在我的任何同事出现之前)。该窗体有一个数据绑定的numericUpDown控件。问题是,当您单击向上或向下箭头时,值将更改并保存OK。但是,如果您只是键入一个数字,然后单击保存,它将不会保存。就像数据绑定从来没有看到变化一样,所以我从WPF背景中猜到了更改以下内容
TaskDaysToComplete.DataBindings.Add("Value", taskTemplate, "DaysToComplete");到这个
TaskDaysToComplete.DataBindings.Add("Value", taskTemplate, "DaysToComplete", false, DataSourceUpdateMode.OnPropertyChanged);就能解决我的问题,而且它确实做到了。现在,您可以键入一个数字或使用控件上的向上/向下箭头来设置"Value“属性。
我的问题是,首先发生了什么?我猜默认的DataSourceUpdateMode是OnValidation,但什么时候会发生这种情况,为什么在使用向上/向下箭头时可以,但在键入内容时似乎从来没有发生过。
谢谢!
发布于 2012-11-26 17:30:04
验证是在失去焦点时完成的,因此当您按up/down键时,文本框失去焦点-触发验证例程。
在编辑文本时,您可以通过单击另一个控件使该控件失去焦点,这将导致该控件生效。
默认值设置为onValidate的原因是,值更改时将导致它对键入的每个字符进行验证,这对于性能和正确的验证都可能是有问题的。
https://stackoverflow.com/questions/13495971
复制相似问题