我有一个由VS 2015构建的WPF解决方案,由几个项目组成。突然,我开始在设计模式中收到一条警告,说明如下:
类型'窗口'不支持直接内容。
我了解某些控件如何不支持直接内容,但System.Windows.Window
应该如此。我得到了与UserControl
相同的警告,据我所知,任何其他通常支持直接内容的控件。
所有东西都编译并且运行正常,但是通过我的所有XAML使用蓝色下划线是令人烦恼的。还有其他人遇到过这个吗?
下面是截图:
答案 0 :(得分:54)
确保您引用System.Xaml。清理并重建项目。适用于VS 2015 Update 1。
答案 1 :(得分:29)
至少在WPF IronPython项目中,为项目添加System.Xaml
引用为我解决了问题:
这里需要注意的一件重要事情是,添加看似任何引用会使问题暂时暂时 - 直到Visual Studio重新启动。另一方面,System.Xaml
似乎可以解决问题。我甚至尝试删除引用,然后在重新启动Visual Studio时返回问题。
答案 2 :(得分:4)
对我来说,这个错误正在发生,因为我在类库项目中添加了一个WPF窗口。
出于某种原因(我不知道),Visual Studio没有为我们提供从" 添加新项目中选择 WPF窗口模板的选项。 强>"如果项目未创建为 WPF应用程序,则对话框。相反,它只提供添加 WPF用户控件的选项。因此,我为新项目选择了用户控制模板,然后编辑了源代码,使XAML成为 Window 对象,而不是用户控制。
<!-- The new item was created as an UserControl, but what I needed was a Window object. -->
<UserControl>
...
</UserControl>
<!-- Changed it to Window and made other necessary adjustments. -->
<Window>
...
</Window>
问题实际上是在代码隐藏中。由于它是作为用户控件创建的,因此窗口分部类继承自 UserControl ,如下所示:
public partial class MyWindow : UserControl
{
public MyWindow ()
{
InitializeComponent();
}
}
要修复它,我只需要删除继承,使我的窗口类继承无所谓,如下:
public partial class MyWindow
{
public MyWindow ()
{
InitializeComponent();
}
}
删除继承后,Visual Studio没有显示错误&#34;类型&#39;窗口&#39;不支持直接内容。&#34;了。
答案 3 :(得分:1)
代表@mark Richman我编辑了Itemtemplate以自动引用&#34; System.Xaml&#34;。 以防有些人感兴趣:
可以在以下位置找到:&#34; [VS InstallDir] \ Common7 \ IDE \ ItemTemplates \ VisualBasic \ WPF \ [InputLocale] \ WPFWindow&#34;
BR, 丹尼尔
答案 4 :(得分:0)
向您的项目添加 System.Xaml 和 UIAutomationProvider 引用,然后再次构建
答案 5 :(得分:0)
在 Visual Studio 2019 中: 我搜索( System.Xaml.dll ) 我将其添加为参考 它运行良好
在这个位置找到它: " C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.8 "