无法正确实现对象的属性值与控件的属性值之间的绑定
本文关键字:属性 之间 绑定 控件 实现 对象 | 更新日期: 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)。