我有一个NumericUpDown
控件,它是UserControl的一部分。 UserControl具有Value属性:
[Browsable(true)]
public override double Value
{
get { return this.ControlValue; }
set
{
this.ControlValue = value;
InvokePropertyChanged(new PropertyChangedEventArgs("Value"));
}
}
我使用DataBindings
作为NumericUpDown
:
NumericUpDown.DataBindings.Add(nameof(NumericUpDown.Value), this, nameof(UserControl.Value), false, DataSourceUpdateMode.OnPropertyChanged);
Value属性曾经是Int32,但我不得不将其更改为Double。突然间绑定停止了工作。
我确定Value属性正在改变,但NumericUpDown的值不会改变。
更正:当Value属性更改时,Binding似乎无法更新NumericUpDown的值。更改NumericUpDown的值DOES更改Value属性。
所以,问题实际上不是在Binding或NumericUpDown控件中,而是在“override”关键字中。在这种情况下,绑定被混淆了哪个属性正在改变 - UserControl的Value或其基类。这是通过使用“new”而不是“override”来解决的。
仍然无法理解为什么我之前没有遇到这个问题。这段代码是4-5个月,在我将Value属性类型从Int32更改为Double之前完美运行。