我正在構建一個派生自TabControl的自定義WPF控件。在ControlTemplate中,我使用ItemsControl來顯示從模板(FileMenuItem類型的可觀察集合)綁定的列表。程序執行過程中,我發現了以下錯誤在輸出窗口:WPF自定義控件 - ItemsControl模板未應用
的ItemTemplate和ItemTemplateSelector 的項目已經 的ItemsControl的容器類型的被忽略; Type ='FileMenuItem'
FileMenuItem類型從MenuItem派生。如果我將基類更改爲DependencyObject,則代碼實際運行並應用模板(這是一個選項)。我GOOGLE了錯誤,找不到任何關於它的信息,有沒有人在開發自定義控件時遇到這個問題?即使我有一個解決方法,我想知道發生了什麼,我認爲使用MenuItem作爲基類是一個更清潔的實現。
我可以發佈更多的代碼,如果它會幫助。謝謝!
好吧,我想我明白 - 是這樣,有可能支持此方案,或者我需要切換到從一個不同的基類繼承?謝謝你的幫助! – 2010-05-03 20:19:34
有很多不同的方法可以去。您應該嘗試確定是否要將集合項目視爲控件(派生自UIElement)或數據(INotifyPropertyChanged或DependencyObject),或者同時創建數據類和UI控件或DataTemplate。另一種可能的選擇是覆蓋GetContainerForItemOverride和IsItemItsOwnContainerOverride的派生ItemsControl,以便爲每個項目(ComboBox,ListBox等)使用FileMenuItem容器。 – 2010-05-04 02:50:50
爲我解決這個問題的最簡單(和有效的)方法之一一直是派生自己的ItemsControl,並重寫'IsItemItsOwnContainerOverride'方法返回false,這意味着DataTemplate不會因爲問題John而跳過解釋。 – GEEF 2014-10-08 15:37:21