WPF集成Edrawing API触发ContentControl内容必须为单个元素错误如何解决
报错原因
你遇到的"The content of the "ContentControl" must be a single item"错误,根源是WPF的UserControl继承自ContentControl,同一时间仅允许存在一个直接子元素。错误触发的两个常见场景:
- 你的
eDrawingsHostControl对应的XAML文件中已经存在默认子元素(通常是新建UserControl时自动生成的空<Grid>标签),此时再通过代码添加新的子元素就会触发冲突 AddChild方法本身的特性是追加子元素,若有逻辑重复触发该方法也会导致多子元素冲突
解决方案
按以下步骤修改即可解决问题:
- 打开
eDrawingsHostControl对应的XAML文件,删除根节点<UserControl>下的所有默认子元素(比如默认生成的<Grid></Grid>),保证UserControl初始没有内置内容 - 将构造函数中的
this.AddChild(host);代码替换为this.Content = host;,直接给UserControl的Content属性赋值,会直接覆盖原有内容,避免追加导致的多元素冲突 - 确认项目已添加
System.Windows.Forms和WindowsFormsIntegration两个程序集的引用,这是使用WindowsFormsHost承载WinForm控件的必要依赖
内容的提问来源于stack exchange,提问作者Leeeeeeevin
相关产品推荐
相关产品推荐

