无法正确实现对象的属性值与控件的属性值之间的绑定

本文关键字:属性 之间 绑定 控件 实现 对象 | 更新日期: 2023-09-27 17:54:12

我试图通过INotifyPropertyChanged实现的客户端类对象数据绑定更新textit控件,我无法让它工作。后面的对象(数据源)更新,但文本仍然保持空白。如果我在编辑框中键入文本,则更新数据源。请你帮忙好吗?以下是我使用的相关代码:

public class Client : NotifyProperyChangedBase
{
    private string _firstname;
    public string Firstname
    {
        get
        {
            return this._firstname;
        }
        set
        {
            this.CheckPropertyChanged<string>("Firstname", ref _firstname, ref value);
        }
    }
}

public Client ClientA = new Client();
Binding fname = new Binding("Text", ClientA, "Firstname", true, DataSourceUpdateMode.OnPropertyChanged);
ultraTextEditor_firstname.DataBindings.Add(fname);

ClientA。Firstname = "testN";<== editbox仍为空白…

我错过了什么吗?提前谢谢你,Peter。

无法正确实现对象的属性值与控件的属性值之间的绑定

我假设您的基础是按照这个示例的方式实现的。如果我的假设不正确,您将需要提供NotifyProperyChangedBase类的实现。

您可能还想查看Binding(String, Object, String, Boolean, DataSourceUpdateMode)构造函数文档,因为它讨论了绑定试图定位的控制事件。

看看这个例子,你会想尝试这样做:

System.ComponentModel.BindingList<Client> bindings = new System.ComponentModel.BindingList<Client>();
Client clientA = bindings.AddNew();
clientA.Firstname = "John";
textEditControl.DataSource = bindings;
// This change presumably will be refelected in control
clientA.Firstname = "Jane";

:在查看了ControlBindingsCollection类的Add方法的文档之后;我认为绑定的数据源需要实现IListSource接口,以便正确地参与绑定(所有MSDN示例都是实现此接口的DataSet或DataTable)。