2011-08-09 33 views
1

我正在嘗試創建一個自定義控件。這個控件需要一個像列表框或樹視圖一樣的綁定,它可以綁定到一個ObservableCollection,並且可以根據需要添加和刪除項目。但是,添加到集合中的項目不會直接顯示在UI上。他們會被處理,然後根據需要添加到控件中。例如,如果傳入一個表示文件完整路徑的字符串,它將被添加到TreeView中,每個目錄都是一個新節點。Subclassing ItemsControl或其他一些策略?

我試圖創建自定義控件作爲ItemsControl的子類,然後綁定然後工作,但我無法弄清楚如何知道什麼時候項目添加到控件,以便我可以在它上面工作。我也考慮過向控件添加一個類型爲ObservableCollection的DependencyProperty,然後根據這些指令綁定它:http://msdn.microsoft.com/en-us/library/aa970563.aspx。但是,以這種方式設置它不允許我綁定到DependencyProperty。

在這一點上,我不在乎我用什麼方法到達那裏,只要我能從第一段得到結果。有人能幫我解決這個問題嗎?

回答

0

通過在你的控制,你可以運行你需要,只要一個項目被添加或從綁定到ItemsSourceObservableCollection移除(Items屬性的人口中)任何代碼重寫OnItemsChanged。如果您直接連接到OC的事件,則此方法的參數與NotifyCollectionChangedEventArgs相同。

這樣做可以讓您採取與您正在考慮的新OC屬性相同的操作,但繼續使用內置的ItemsSource屬性將集合綁定到控件。

+0

感謝您的回覆。那不是我正在尋找的東西,但它讓我在需要的地方。顯然,從我通過調試看到的,OnItemsChanged事件僅在控件第一次創建時觸發。但是,只要將項目添加到綁定集合,就會觸發OnItemsSource更改事件。 –