Ответ 1
Для тех, кто имеет эту проблему на Visual Studio 2015, попробуйте добавить (если он еще не добавлен) System.Xaml
ссылку на ваш проект. Visual Studio просто не показывает ссылочную ошибку.
У меня есть проект надстройки 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, и у меня такая же проблема.
Для тех, кто имеет эту проблему на Visual Studio 2015, попробуйте добавить (если он еще не добавлен) System.Xaml
ссылку на ваш проект. Visual Studio просто не показывает ссылочную ошибку.
Добавьте System.Xaml
и UIAutomationProvider
ссылки на ваш проект после этого ясного решения, а затем снова создайте
Добавьте ссылки System.Xaml
и UIAutomationProvider
, а затем перезапустите Visual Studio, чтобы решить проблемы.
В VS2017 (15.3.5) эта проблема возникает, если базовый UserControl/Window of UserControl, который вы редактируете, находится в той же библиотеке /exe. После запуска VS это прекрасно в течение нескольких минут, затем что-то в фоновом режиме икоты, и весь файл XAML синеват. Скомпилируйте, и он уйдет, начните печатать, и он мгновенно вернется. Intellisense все еще работает, но делает редактор XAML практически непригодным.
Единственный способ исправить это - переместить базовые классы в другую библиотеку.
Итак, кажется, что кодирование фарси было в одночасье, так как теперь это выглядит отлично, без меня что-то изменилось, очень странно, но по крайней мере я могу продолжить!
Помимо добавления уже отмеченных ссылок, мне пришлось закрыть и снова открыть решение. Если даже это не решит проблему, перезапустите Visual Studio.
Просто удалите System.Xaml
, а затем добавьте его снова.
Попробуйте разоблачить новое свойство Content как пример и использовать ContentPropertyAttribute для класса. Для меня это помогло. У меня была проблема в VS 2017.
[ContentProperty( "Content" )]
public class MyUserControl: UserControl
{
public new Object Content
{
get => base.Content;
set => base.Content = value;
}
...
}