我怎样才能在c#中进行数据绑定?

我有以下class级

公共课车
 {
    public name {get; 组;}
 }

我想以编程方式将其绑定到文本框。

我怎么做?

在黑暗中拍摄:

 ...
汽车=新车();
 TextEdit editBox = new TextEdit();
 editBox.DataBinding.Add(“Name”,car,“Car  -  Name”);
 ...

我得到以下错误

“无法绑定到目标控件上的”名称“。

我做错了什么,我该如何做? 我发现数据绑定概念有点难以从networking开发中掌握。

你要

editBox.DataBindings.Add("Text", car, "Name"); 

第一个参数是控件上要被数据绑定的属性的名称,第二个参数是数据源,第三个参数是要绑定到的数据源的属性。

没有看语法,我很确定它是:

 editBox.DataBinding.Add("Text", car, "Name"); 
 editBox.DataBinding.Add("Text", car, "Name"); 

第一个arg是控件属性的名称,第二个是要绑定的对象,最后一个是要用作数据源的对象属性的名称。

数据绑定行将非常接近

 editBox.DataBinding.Add("Text", car, "Name"); 

这第一个参数是将被数据绑定的编辑框对象的属性。 第二个参数是要绑定到的数据源,最后一个参数是要绑定到的数据源的属性。

请记住,数据绑定是一种方式,所以如果您更改编辑框然后汽车对象得到更新,但如果您直接更改汽车名称编辑框不更新。

尝试:

 editBox.DataBinding.Add( "Text", car", "Name" ); 

我相信

editBox.DataBindings.Add(new Binding(“Text”,car,“Name”));

应该做的伎俩。 没有尝试,但我认为这是主意。

您正试图绑定到TextEdit控件的“名称”。 该名称用于以编程方式访问该控件,并且不能绑定。 您应该与控件的文本绑定。

以下是可用作属性的generics类,并实现了由绑定控件使用的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 ); 

..其中“文本”是文本框的属性,“this”是当前的Form实例。

一个类不必inheritanceINotifyPropertyChanged类。 一旦声明了System.ComponentModel.PropertyChangedEventHandlertypes的事件,类change事件将由控件数据绑定器

使用C#4.6语法:

 editBox.DataBinding.Add(nameof(editBox.Text), car, nameof(car.Name)); 

如果car为null,那么上面的代码会比使用文字串表示cardatamember更加显眼

它的

  this.editBox.DataBindings.Add(new Binding("Text", car, "Name"));