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