WPF自定义控件 – 未应用ItemsControl模板

我正在构建一个派生自TabControl的自定义WPF控件。 在ControlTemplate中,我使用ItemsControl来显示从模板绑定的列表(FileMenuItem类型的可观察集合)。 在程序执行期间,我在输出窗口中收到以下错误:

对于ItemsControl容器类型的项目,将忽略ItemTemplate和ItemTemplateSelector; 类型= ‘FileMenuItem’

FileMenuItem类型派生自MenuItem。 如果我将基类更改为DependencyObject,则实际运行代码并应用模板(这是一个选项)。 我用谷歌搜索错误,无法找到任何关于它的信息,是否有人在开发自定义控件时遇到此问题? 即使我有一个解决方法,我想了解发生了什么,我认为使用MenuItem作为基类是一个更清洁的实现。

我可以发布更多代码,如果它会有所帮助。 谢谢!

DataTemplate(如ItemTemplate)的目的是为数据对象提供可视化。 具体来说,它定义了一组要添加到可视树中的元素,而不是给予ContentPresenter或ItemsPresenter的数据。 在您的情况下,您的源列表是一组对象,这些对象已经能够直接添加到可视树中以便在UI中显示。

您可以在下面的简化示例中看到这一点,其中只有“Three”以红色显示,因为前两个项目是以可以由ComboBox直接显示的forms定义的。

      One Two Three