it-swarm.com.ru

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

У меня есть проект надстройки для 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>

Я знаю, что раньше мне приходилось добавлять guid типа проекта 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>

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

ОБНОВЛЕНИЕ

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

50
NAJ

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

154
alicanerdogan

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

95
paulgai

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

17
SLdragon

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

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

3
avenmore

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

3
Ahmed Alayat

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

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

Хотя отсутствующие ссылки были упомянуты в качестве решения, я обнаружил, что это также может быть причиной необходимости устранения неоднозначностей классов в ваших ссылках.

Для меня проблема была вызвана внешней библиотекой, которая определила свою собственную ContentPropertyAttribute в пространстве имен System.Windows.Markup, которая вызывала полный сбой атрибутов содержимого. Удаление ссылки решит проблему, но если это не вариант, вам придется вместо этого установить namespace alias в свойствах ссылки.

0
Jason Lim

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

0
Julio Nobre

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

0
NAJ