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);
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11