我有一個包含一個屬性的通用自定義控件的通用屬性如下所示:的WinForms數據綁定在一個自定義的控制
public T Editing
{
get { return _editing; }
set
{
if (object.ReferenceEquals(value, _editing))
return;
BeginInvoke(new MethodInvoker(() => UpdateOnGuiThread(value)));
}
}
我已經試過數據綁定這個屬性爲我的控制器對象上的屬性,如下圖所示:
_customCtrl.DataBindings.Add(new Binding("Editing", _controller, "CurrentItem"));
控制器類實現INotifyPropertyChanged並暴露這樣的屬性:
public SpecialData CurrentItem
{
get { return _currentItem; }
set
{
_currentItem= value;
OnPropertyChanged("CurrentItem");
}
}
但是,當我從我的控制器類中廣播PropertyChanged
時,調試器將永遠不會輸入Editing
屬性的setter。我也試過下面的數據綁定無濟於事。
_customCtrl.DataBindings.Add(new Binding("Editing", _controller, "CurrentItem", false, DataSourceUpdateMode.OnPropertyChanged));
我讀過https://msdn.microsoft.com/en-us/library/ms233813(v=vs.80).aspx和使用DefaultBindingPropertyAttribute
嘗試,但它並沒有幫助。
有沒有人知道如何讓這個綁定工作?我認爲綁定管理器會將值從控制器傳播到控件的屬性,因爲PropertyChanged在控制器類中廣播(就像簡單的文本框文本綁定一樣)。
任何想法?
感謝, 肖恩
什麼是'_customCtrl'的實際'T'並且是否存在從'SpecialData'到它的轉換? –
它們是相同的類型。這是一個班級類型 –