gpt4 book ai didi

c# - WPF 自定义控件 - 未应用 ItemsControl 模板

转载 作者:太空狗 更新时间:2023-10-29 20:22:28 31 4
gpt4 key购买 nike

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

ItemTemplate and ItemTemplateSelector are ignored for items already of the ItemsControl's container type; Type='FileMenuItem'

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

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

最佳答案

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

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

<ComboBox>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Foreground="Red"/>
</DataTemplate>
</ComboBox.ItemTemplate>
<ComboBoxItem>One</ComboBoxItem>
<ComboBoxItem>Two</ComboBoxItem>
<sys:String>Three</sys:String>
</ComboBox>

关于c# - WPF 自定义控件 - 未应用 ItemsControl 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2749060/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com