如何在c#中进行数据绑定?

时间:2008-09-22 15:01:38

标签: c# winforms data-binding

我有以下课程

public class Car
{
   public Name {get; set;}
}

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

我该怎么做?

在黑暗中拍摄:

...
Car car = new Car();
TextEdit editBox = new TextEdit();
editBox.DataBinding.Add("Name", car, "Car - Name");
...

我收到以下错误

  

“无法绑定到目标控件上的'属性'名称。

我做错了什么,我应该怎么做?我发现来自网络开发的数据绑定概念有点难以理解。

10 个答案:

答案 0 :(得分:51)

你想要

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

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

答案 1 :(得分:11)

不看语法,我很确定它是:

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

答案 2 :(得分:7)

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

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

答案 3 :(得分:6)

您非常接近数据绑定行

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

第一个参数是您的editbox对象的属性,它将是数据绑定的。第二个参数是您要绑定的数据源,最后一个参数是您要绑定到的数据源上的属性。

请记住,数据绑定是一种方式,因此如果您更改编辑框,则汽车对象会更新,但如果您直接更改汽车名称,则不会更新编辑框。

答案 4 :(得分:3)

尝试:

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

答案 5 :(得分:3)

我相信

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

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

答案 6 :(得分:1)

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

答案 7 :(得分:0)

以下是可用作属性的泛型类,并实现绑定控件使用的INotifyPropertyChanged以捕获属性值中的更改。

CC=i686-elf-gcc

可以这样声明:

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>();

..其中&#34;文字&#34;是文本框的属性,&#39;这个&#39;是当前的Form实例。

类不必继承INotifyPropertyChanged类。声明类型为System.ComponentModel.PropertyChangedEventHandler的事件后,控件数据透视器将订阅类更改事件

答案 8 :(得分:0)

使用C#4.6语法:

datamember

如果car为null,则上述代码将以比使用文字字符串表示car的{​​{1}}

更为显眼的方式失败

答案 9 :(得分:0)

它的

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