我使用以下命令将域对象属性绑定到System.Windows.Forms.Label的Text属性DataBindings
:
Label l = new Label(); l.DataBindings.Add(new Binding("Text",myDomainObject,"MyProperty"));
但是,当我更改域对象时,Label不会反映更改.我知道对于像DataGridView这样的复杂控件,可以使用BindingSource完成绑定,我可以在其上调用ResetBindings,但是我找不到任何方法来在Label的简单情况下更新绑定.
肯特有正确的答案,但我想在应用INotifyPropertyChanged
界面上添加一点点.
要轻松举起活动,请尝试这样做
protected void OnPropertyChanged(Expression > property) { if (this.PropertyChanged != null) { var mex = property.Body as MemberExpression; string name = mex.Member.Name; this.PropertyChanged(this, new PropertyChangedEventArgs(name)); } }
并应用它
{ // inside some method or property setter OnPropertyChanged(() => this.MyProperty); }
这比通过名称指定属性更好的唯一原因是,如果您重构,或者只是更改属性的名称,您不必手动更改实现,但可以让编译器自动重命名所有引用.