我有一個UserControl,它有一個Textbox,Button和一個Tooltip控件。它實現INotifyPropertyChanged我試圖覆蓋文本屬性並添加我自己的屬性,但在所有情況下,控件從綁定的數據源讀取罰款,但從不更新數據源。文字改變時會引發我的事件。一些代碼如下。所有其他標準控件工作正常。當用戶輸入或更改值時,需要什麼來獲取控件來更新數據源?Bound UserControl沒有更新數據源
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' ... – Tigran 2012-01-11 21:13:06
,並把代碼放在你實際綁定到數據的地方...... – Tigran 2012-01-11 21:14:35
你有使用中間屬性的特殊原因嗎?你可以直接將'url'文本框的Text屬性綁定到綁定源的'First'屬性上。 – Reddog 2012-01-11 21:44:24