天天看點

WPF筆記整理--DataBinding(1)

wpf的資料綁定是一大亮點。如果用wpf而不用資料綁定,那就太失敗了。

也不多廢話,如果不知道如何綁定,請百度一下。這裡簡單的提幾點:

1. observablecollection可用于集合綁定,由于已經實作了inotifypropertychanged,可以通過添加删除集合中的元素來實作對ui清單項更新。注意,當一個observablecollection已經有元素,通過再次new集合并不能實作清空頁面已顯示的内容。 如果希望observablecollection中某清單項的屬性值改變顯示在界面上,要實作inotifypropertychanged。例如,有個應用是關于賣圖書的電子商務網站,有個頁面是用來顯示圖書資訊的。圖書的對象book,有3個屬性:書名name,價格price,數量count。用wpf資料綁定實作在圖書增減,價格和數量變化時頁面随時更新。書的集合定義

observablecollection<book>,這樣在圖書增加,或移除會在ui展現。而book 對應的class要實作inotifypropertychanged,這樣在price和count變化時會在ui展現。

2.

用listbox的時候,itemssource綁定了對象,這事如果在xaml裡面又定義了listboxitem标簽,會導緻程式一啟動就崩潰,貌似vs還捕獲不到異常。

3.這個是前幾天遇到的,還沒時間研究原因是什麼。隻提一下現象和解決辦法。

有個usercontrol包含數量不定的圖檔,而且要保證這個圖檔清單随時更新。于是定義了個timer來check是否有新的圖檔資料,如果有就更新圖檔清單。圖檔清單是儲存在observablecollection中。在xaml中給這個uc定義x:name,然後在listbox的itemssource

==”{binding elementname=ucname,

path=collection}”。結果無論如何界面上都沒有圖檔顯示。後來debug時發現,背景的collection對象的值是expected,而listbox的itemssource一直是null。目前解決辦法是在loaded事件中,直接itemssource=collection就正常了。目前懷疑是多線程的原因。

繼續閱讀