Windows Form 資料繫結中的變更告知
Windows Forms 資料系結最重要的概念之一是 變更通知 。 若要確保您的資料來源和繫結控制項一律具有最新的資料,您必須新增資料系結的變更通知。 具體來說,您想要確保系結控制項會收到對其資料來源所做的變更通知,而且資料來源會收到控制項系結屬性變更的通知。
根據資料系結的類型而定,有不同類型的變更通知:
簡單系結,其中單一控制項屬性會系結至物件的單一實例。
清單型系結,可包含系結至清單中專案屬性的單一控制項屬性,或系結至物件清單的控制項屬性。
此外,如果您要建立要用於資料系結的 Windows Forms 控制項,則必須將 PropertyName 變更模式套用 至控制項,讓控制項系結屬性的變更傳播至資料來源。
簡單系結的變更通知
對於簡單的系結,當系結屬性的值變更時,商務物件必須提供變更通知。 您可以公開 商務物件之每個屬性的 PropertyName Changed 事件,並將商務物件系結至控制項的 BindingSource 或 慣用方法,讓商務物件 INotifyPropertyChanged 實作 介面,並在屬性值變更時引發 PropertyChanged 事件。 如需詳細資訊,請參閱 如何:實作 INotifyPropertyChanged 介面 。 當您使用實作 INotifyPropertyChanged 介面的物件時,您不需要使用 BindingSource 將 物件系結至 控制項,但建議使用 BindingSource 。
清單型系結的變更通知
Windows Forms 相依于系結清單,以提供屬性變更(清單專案屬性值變更)和清單變更(專案已刪除或新增至清單)資訊至系結控制項。 因此,用於資料系結的清單必須實 IBindingList 作 ,以提供這兩種類型的變更通知。 BindingList<T>是 的 IBindingList 泛型實作,其設計目的是要與 Windows Forms 資料系結搭配使用。 您可以建立 BindingList<T> ,其中包含實作 INotifyPropertyChanged 的商務物件類型,清單會自動將 PropertyChanged 事件轉換成事件 ListChanged 。 如果系結清單不是 IBindingList ,您必須使用 BindingSource 元件將物件清單系結至 Windows Forms 控制項。 元件 BindingSource 會提供類似于 的屬性 BindingList<T> 對清單轉換。 如需詳細資訊,請參閱 如何:使用 BindingSource 和 INotifyPropertyChanged 介面 引發變更通知。
自訂控制項的變更通知
最後,從控制項端,您必須針對設計為系結至資料的每個屬性公開 PropertyName Changed 事件。 然後,控制項屬性的變更會傳播至系結的資料來源。 如需詳細資訊,請參閱 如何:套用 PropertyNameChanged 模式
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應