共用方式為


Windows Form 資料繫結中的變更告知

Windows Forms 資料繫結最重要的概念之一是變更通知。 若要確保您的資料來源和繫結控制項一律具有最新的資料,您必須新增資料繫結的變更通知。 具體來說,您想要確保繫結控制項會收到對其資料來源所做的變更通知,而且資料來源會收到控制項繫結屬性變更的通知。

根據資料繫結的類型而定,有不同類型的變更通知:

  • 簡單繫結,其中單一控制項屬性會繫結至物件的單一執行個體。

  • 清單型繫結,可包含繫結至清單中項目屬性的單一控制項屬性,或繫結至物件清單的控制項屬性。

此外,如果您正在建立要用於資料繫結的 Windows Forms 控制項,則必須將 PropertyName 變更模式套用至控制項,以便控制項繫結屬性的變更傳播至資料來源。

簡單繫結的變更通知

對於簡單繫結,當繫結屬性的值變更時,商務物件必須提供變更通知。 您可以為商務物件的每個屬性公開 PropertyName Changed 事件並且以 BindingSource 或慣用的方法將商務物件繫結至控制項,讓商務物件實作 INotifyPropertyChanged 介面,並在屬性值變更時引發 PropertyChanged 事件,以便完成此操作。 如需詳細資訊,請參閱如何:實作 INotifyPropertyChanged 介面。 您使用實作 INotifyPropertyChanged 介面的物件時,不需要使用 BindingSource 將物件繫結至控制項,但建議使用 BindingSource

清單型繫結的變更通知

Windows Forms 相依於繫結清單,以提供屬性變更 (清單項目屬性值變更) 和清單變更 (項目已刪除或新增至清單) 資訊至繫結控制項。 因此,用於資料繫結的清單必須實作 IBindingList,以提供這兩種類型的變更通知。 BindingList<T>IBindingList 的泛型實作,其設計目的是要與 Windows Forms 資料繫結搭配使用。 您可以建立包含實作 INotifyPropertyChanged 之商務物件類型的 BindingList<T>,而清單會自動將 PropertyChanged 事件轉換為事件 ListChanged。 如果繫結清單不是 IBindingList,則您必須使用 BindingSource 元件將物件清單繫結至 Windows Forms 控制項。 BindingSource 元件會提供類似於 BindingList<T> 元件的屬性對清單轉換。 如需詳細資訊,請參閱操作說明:使用 BindingSource 和 INotifyPropertyChanged 介面引發變更告知

自訂控制項的變更通知

最後,從控制項端,您必須針對設計用來繫結至資料的每個屬性公開 PropertyName 變更事件。 然後,控制項屬性的變更會傳播至繫結的資料來源。 如需詳細資訊,請參閱如何:套用 PropertyNameChanged 模式

另請參閱