Тип "UserControl" не поддерживает прямой контент

У меня есть проект надстройки VSTO Outlook 2013 и 2016, и я пытаюсь добавить пользовательский элемент управления WPF в настраиваемую панель задач, как описано здесь.

Проблема заключается в том, что когда я добавляю User Control (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>

Я знаю, что в прошлом мне приходилось добавлять директиву типа проекта WPF в файл .proj, чтобы заставить некоторые вещи работать, но добавление этого не имело никакого значения (на самом деле оно даже не загружалось бы в определенном порядке).

Оригинал:

<ProjectTypeGuids>{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Сбои:

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

Не сбой, но не исправляет ошибку:

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

Может ли кто-нибудь указать мне в правильном направлении?

UPDATE

Я попытался создать новый проект библиотеки классов прямо из коробки, добавил пользовательский элемент управления WPF, а затем добавил ссылку на System.Xaml, и у меня такая же проблема.

Ответ 1

Для тех, кто имеет эту проблему на Visual Studio 2015, попробуйте добавить (если он еще не добавлен) System.Xaml ссылку на ваш проект. Visual Studio просто не показывает ссылочную ошибку.

Ответ 2

Добавьте System.Xaml и UIAutomationProvider ссылки на ваш проект после этого ясного решения, а затем снова создайте

Ответ 3

Добавьте ссылки System.Xaml и UIAutomationProvider, а затем перезапустите Visual Studio, чтобы решить проблемы.

Ответ 4

В VS2017 (15.3.5) эта проблема возникает, если базовый UserControl/Window of UserControl, который вы редактируете, находится в той же библиотеке /exe. После запуска VS это прекрасно в течение нескольких минут, затем что-то в фоновом режиме икоты, и весь файл XAML синеват. Скомпилируйте, и он уйдет, начните печатать, и он мгновенно вернется. Intellisense все еще работает, но делает редактор XAML практически непригодным.

Единственный способ исправить это - переместить базовые классы в другую библиотеку.

Ответ 5

Итак, кажется, что кодирование фарси было в одночасье, так как теперь это выглядит отлично, без меня что-то изменилось, очень странно, но по крайней мере я могу продолжить!

Ответ 6

Помимо добавления уже отмеченных ссылок, мне пришлось закрыть и снова открыть решение. Если даже это не решит проблему, перезапустите Visual Studio.

Ответ 7

Просто удалите System.Xaml, а затем добавьте его снова.

Ответ 8

Попробуйте разоблачить новое свойство Content как пример и использовать ContentPropertyAttribute для класса. Для меня это помогло. У меня была проблема в VS 2017.

[ContentProperty( "Content" )]
public class MyUserControl: UserControl
{
    public new Object Content
    {
        get => base.Content;
        set => base.Content = value;
    }
    ...
}