【发布时间】:2012-02-08 05:54:41
【问题描述】:
我有一个用户控件,上面有一个文本框、按钮和一个工具提示控件。它确实实现了 INotifyPropertyChanged 我已经尝试覆盖 Text 属性并添加我自己的属性,但在所有情况下,控件都可以从绑定的数据源中读取,但从不更新数据资源。更改文本时会引发我的事件。部分代码如下。所有其他标准控件工作正常。当用户输入或更改值时,我需要什么控件来更新数据源?
public partial class UrlControl : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
[Bindable(true)]
[Browsable(true)]
public string Url
{
get
{
return url.Text;
}
set
{
if (value != url.Text)
{
url.Text = value;
OnPropertyChanged("Url");
}
}
}
protected virtual void OnPropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
这是来自表单设计器的绑定代码。
this.urlControl1.DataBindings.Add(new System.Windows.Forms.Binding("Url", this.customerBindingSource, "First", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
}
【问题讨论】:
-
真的是 Windows 窗体吗?你说的是
INotifiedPropertyChanged... -
并将代码放在您实际绑定到数据的位置...
-
您使用中间属性是否有特殊原因?您可以直接将
url文本框的 Text 属性绑定到绑定源的First属性。
标签: c# winforms data-binding