类型'窗口'不支持直接内容

时间:2015-11-19 13:25:53

标签: wpf xaml visual-studio-2015

我有一个由VS 2015构建的WPF解决方案,由几个项目组成。突然,我开始在设计模式中收到一条警告,说明如下:

  

类型'窗口'不支持直接内容。

我了解某些控件如何不支持直接内容,但System.Windows.Window应该如此。我得到了与UserControl相同的警告,据我所知,任何其他通常支持直接内容的控件。

所有东西都编译并且运行正常,但是通过我的所有XAML使用蓝色下划线是令人烦恼的。还有其他人遇到过这个吗?

下面是截图:

enter image description here

6 个答案:

答案 0 :(得分:54)

确保您引用System.Xaml。清理并重建项目。适用于VS 2015 Update 1。

答案 1 :(得分:29)

至少在WPF IronPython项目中,为项目添加System.Xaml引用为我解决了问题:

enter image description here

这里需要注意的一件重要事情是,添加看似任何引用会使问题暂时暂时 - 直到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;。 以防有些人感兴趣:

enter image description here

可以在以下位置找到:&#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 "