C#利用Lambda和Expression实现数据的动态绑定
作者:网络转载 发布时间:[ 2013/9/2 10:23:15 ] 推荐标签:
在程序开发过程中,有时为了让数据能够实时更新,我们会采用数据绑定来实现。
一般我们数据绑定时我们是这样写的
public class Helper : INotifyPropertyChanged
{
#region statusInfo Property
private string statusInfo_ = "";
public string statusInfo_pro
{
get
{
return statusInfo_;
}
set
{
if (value == statusInfo_)
{
return;
}
statusInfo_ = value;
NotifyPropertyChanged(() => statusInfo_pro);
}
}
#endregion
#region statusInfo NotifyPropertyChanged
public void NotifyPropertyChanged<T>(Expression<Func<T>> property)
{
if (PropertyChanged == null)
{
return;
}
var memberExpression = property.Body as MemberExpression;
if (memberExpression == null)
{
return;
}
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(memberExpression.Member.Name));
}
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
private Helper helper_=new Helper();
private void binding()
{
textbox1.DataBindings.Add("Text",helper,"statusInfo_pro");
}
其中Helper是继承接口INotifyPropertyChanged,因为数据绑定的实现主要依赖于INotifyPropertyChanged接口。
如果要实现双向数据绑定(即数据源Helper.statusInfo_pro改变了会影响绑定的控件,绑定的控件数据改变了会自动更新到数据源Helper.statusInfo_pro上),这时需要修改binding的实现,具体如下:
private void binding()
{
textbox1.DataBindings.Add("Text",helper,"statusInfo_pro",false,DataSourceUpdateMode.OnPropertyChanged);
}

sales@spasvo.com