"UserControl"类型不支持直接内容

NAJ*_*NAJ 55 c# wpf xaml user-controls outlook-addin

我有一个Outlook 2013和2016 VSTO加载项项目,我试图描述一个WPF用户控件添加到自定义任务窗格这里.

我遇到的问题是,当我添加用户控件(WPF)时,它会生成一个带网格的WPF控件,但会自动抛出"类型'UserControl'不支持直接内容"的错误.

WPF生成:

<UserControl x:Class="TestNamespace.UserControl1"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:TestNamespace"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>

</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

我知道在过去我不得不将WPF项目类型的guid添加到.proj文件中以使一些工作正常工作,但添加它没有任何区别(实际上它甚至不会按特定顺序加载).

原版的:

<ProjectTypeGuids>{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)

崩溃:

<ProjectTypeGuids>{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)

不崩溃,但不修复错误:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)

谁能指出我正确的方向?

UPDATE

我尝试直接创建一个新的类库项目,添加了一个WPF用户控件,然后添加了对System.Xaml的引用,我有同样的问题.

小智 158

对于在Visual Studio 2015上遇到此问题的任何人,请尝试添加(如果尚未添加)System.Xaml对项目的引用.Visual Studio根本无法显示引用错误.

  • 请参阅paulgai的回答:您还需要`UIAutomationProvider` (14认同)
  • 我不得不重新启动VS以获得修改,但从那时起它就起作用了! (3认同)

小智 96

在该明确的解决方案之后添加System.XamlUIAutomationProvider引用您的项目,然后再次构建

  • 然后编辑你的XAML,问题又回来了... VS2015 Update 3 (7认同)
  • 这应该是答案.VS 2015需要XAML和UIAutomationProvider.我想补充一点,你需要在添加引用后重新启动VS,否则问题会在编辑后继续. (5认同)
  • 这个问题在VS2017中对我来说已经浮出水面,所有解决方案均无效。 (2认同)

SLd*_*gon 18

添加System.XamlUIAutomationProvider引用,然后重新启动Visual Studio解决问题.


ave*_*ore 5

在 VS2017 (15.3.5) 中,如果您正在编辑的 UserControl 的基本 UserControl/Window 在同一个 library/exe 中,则会出现此问题。启动 VS 后几分钟就好了,然后在后台打嗝,整个 XAML 文件呈蓝色波浪线。编译它就会消失,开始输入它会立即返回。Intellisense 仍然有效,但它使 XAML 编辑器几乎无法使用。

修复它的唯一方法是将基类移动到另一个库中。


NAJ*_*NAJ 0

所以看起来编码精灵已经在一夜之间完成了,因为现在似乎在我没有改变任何东西的情况下完美地工作,非常奇怪,但至少我现在可以继续!