Numericupdown不显示其值

时间:2013-01-31 09:31:23

标签: winforms data-binding inotifypropertychanged numericupdown

背景:

我有一个numericupdown,它的'Value'属性绑定到一个对象的属性(当然是Decimal)。对象的类实现INotifyPropertyChanged,当属性更改其值时引发propertychanged事件,绑定设置为updatemode.OnPropertyChanged。

private System.Windows.Forms.BindingSource myClassbindingSource;

在我的表格的OnLoad中,我有以下内容:

myClassbindingSource.Add( MyObject1 ); //(MyObject1 is an instance of MyClass)
base.OnLoad( e );

自动生成的绑定(在我将其DataBinding的高级属性'数据源更新模式'更改为'OnPropertyChanged'之后):

this.NumericUpDown1.DataBindings.Add(new System.Windows.Forms.Binding(
    "Value", this.myClassBindingSource, "MyProperty", true, 
    System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));

我的班级:

public class MyClass : INotifyPropertyChanged {

    private Decimal myValue;

    public Decimal MyProperty{
    get { return myvalue; }
    set { 
        myvalue = value;
        NotifyPropertyChanged( "MyProperty" );
    }

    ...

    public event PropertyChangedEventHandler PropertyChanged;

    protected void NotifyPropertyChanged( String info ) {
      var pceHandler = PropertyChanged;
      var pceArgs = new PropertyChangedEventArgs( info );
      if( pceHandler != null )
        pceHandler( this, pceArgs );
    }
}

问题:

现在,当对象的属性从代码的其他部分更改时,NumericUpdown不会显示其新值。

当我调试代码时,我可以看到,当属性发生更改时,PropertyChanged事件将触发,我的NUD的“Value”属性会获得正确的值,但“Text”属性的默认值为“0.000”。

还有其他控件可以使绑定正常工作,例如复选框与布尔,标签与字符串。但不是我的NUD绑定了十进制。

问题:

如何在'Value'属性中更新'Text'属性,以便显示正确的值? 或者更确切地说,为什么'Text'属性不会更新? 是否有属性可以控制如何处理它?<​​/ p>

0 个答案:

没有答案