如何在 C# 中进行数据绑定?
Posted
技术标签:
【中文标题】如何在 C# 中进行数据绑定?【英文标题】:How can I do Databinding in c#? 【发布时间】:2010-09-12 00:49:41 【问题描述】:我有以下课程
公共级汽车 公共名称get;放;我想以编程方式将其绑定到文本框。
我该怎么做?
在黑暗中拍摄:
... 汽车 car = new Car(); TextEdit 编辑框 = new TextEdit(); editBox.DataBinding.Add("名称", car, "汽车 - 名称"); ...我收到以下错误
“无法绑定到目标控件上的属性“名称”。
我做错了什么,我应该怎么做?我发现来自网络开发的数据绑定概念有点难以理解。
【问题讨论】:
【参考方案1】:你想要
editBox.DataBindings.Add("Text", car, "Name");
第一个参数是控件上要绑定数据的属性名称,第二个参数是数据源,第三个参数是数据源上要绑定的属性。
【讨论】:
【参考方案2】:不看语法,我很确定它是:
editBox.DataBinding.Add("Text", car, "Name");
【讨论】:
【参考方案3】:editBox.DataBinding.Add("Text", car, "Name");
第一个参数是控件属性的名称,第二个是要绑定的对象,最后一个是要用作数据源的对象属性的名称。
【讨论】:
【参考方案4】:你已经很接近数据绑定线了
editBox.DataBinding.Add("Text", car, "Name");
第一个参数是要绑定数据的编辑框对象的属性。第二个参数是要绑定的数据源,最后一个参数是要绑定的数据源的属性。
请记住,数据绑定是一种方式,因此如果您更改编辑框,则汽车对象会更新,但如果您直接更改汽车名称,则不会更新编辑框。
【讨论】:
【参考方案5】:试试:
editBox.DataBinding.Add( "Text", car", "Name" );
【讨论】:
【参考方案6】:我相信
editBox.DataBindings.Add(new Binding("Text", car, "Name"));
应该可以解决问题。没试过,但我认为是这样的。
【讨论】:
【参考方案7】:您正在尝试绑定到 TextEdit 控件的“名称”。该名称用于以编程方式访问控件,不能绑定。您应该对控件的文本进行绑定。
【讨论】:
【参考方案8】:使用 C# 4.6 语法:
editBox.DataBinding.Add(nameof(editBox.Text), car, nameof(car.Name));
如果 car 为 null,那么上面的代码将比使用文字字符串表示 car
的 datamember
更明显的方式失败
【讨论】:
【参考方案9】:以下是可以用作属性的泛型类,它实现了绑定控件用来捕获属性值变化的 INotifyPropertyChanged。
public class NotifyValue<datatype> : INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged = delegate ;
datatype _value;
public datatype Value
get
return _value;
set
_value = value;
PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Value"));
可以这样声明:
public NotifyValue<int> myInteger = new NotifyValue<int>();
并分配给这样的文本框
Textbox1.DataBindings.Add(
"Text",
this,
"myInteger.Value",
false,
DataSourceUpdateMode.OnPropertyChanged
);
..其中“Text”是文本框的属性,“this”是当前的 Form 实例。
类不必继承 INotifyPropertyChanged 类。声明 System.ComponentModel.PropertyChangedEventHandler 类型的事件后,控件数据绑定器将订阅类更改事件
【讨论】:
【参考方案10】:这是
this.editBox.DataBindings.Add(new Binding("Text", car, "Name"));
【讨论】:
以上是关于如何在 C# 中进行数据绑定?的主要内容,如果未能解决你的问题,请参考以下文章
MFC程序的Datagridview控件如何绑定MySql数据库中的数据进行显示啊?语言是C++。
C# WPF 数据绑定DataContext;Window_Loaded时进行过数据绑定,指定DataContext;触发另一事件?
C#中datagridview如何绑定ArrayList集合?
c# 中如何把实体类绑定到dataGridView并显示出来。