web-dev-qa-db-fra.com

Le type 'UserControl' ne supporte pas le contenu direct

J'ai un projet de complément VSTO Outlook 2013 et 2016 et j'essaie d'ajouter un contrôle utilisateur WPF à un volet de tâches personnalisé, comme décrit ici .

Le problème que j'ai, c'est que lorsque j'ajoute le contrôle utilisateur (WPF), il génère un contrôle WPF avec une grille, mais génère automatiquement une erreur de type "Le type 'UserControl' ne prend pas en charge le contenu direct".

WPF généré:

<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>

Je sais que par le passé, j'ai dû ajouter le guide de type de projet WPF au fichier .proj pour que certaines choses fonctionnent, mais cela n'a fait aucune différence (en fait, il ne serait même pas chargé dans un certain ordre).

Original:

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

Crashes:

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

Ne plante pas, mais ne corrige pas l'erreur:

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

Est-ce que quelqu'un peut-il me montrer la bonne direction?

METTRE &AGRAVE; JOUR

J'ai essayé de créer un nouveau projet de bibliothèque de classes tout de suite, j'ai ajouté un contrôle utilisateur WPF, puis ajouté la référence à System.Xaml et j'ai le même problème.

50
NAJ

Si vous rencontrez ce problème sous Visual Studio 2015, essayez d’ajouter (s’il n’a pas déjà été ajouté) une référence System.Xaml à votre projet. Visual Studio ne parvient tout simplement pas à afficher l'erreur de référence.

154
alicanerdogan

AjoutezSystem.XamletUIAutomationProviderréférences à votre projet, après cette solution claire, puis générez à nouveau

95
paulgai

Ajoutez les références System.Xaml et UIAutomationProvider, puis redémarrez Visual Studio résolvez les problèmes.

17
SLdragon

Dans VS2017 (15.3.5), ce problème se produit si le UserControl/Window de base du UserControl que vous modifiez est dans la même bibliothèque/exe. Après le démarrage de VS, quelques minutes suffisent, puis quelque chose à l'arrière-plan se tord et le fichier XAML dans son ensemble est en bleu. Compilez et il s'en va, commencez à taper et il est instantanément de retour. Intellisense fonctionne toujours, mais il rend l’éditeur XAML presque inutilisable.

Le seul moyen de résoudre ce problème consiste à déplacer les classes de base dans une autre bibliothèque.

3
avenmore

Supprimez simplement System.Xaml, puis ajoutez-le à nouveau.

3
Ahmed Alayat

Essayez d'exposer une nouvelle propriété Content comme dans l'exemple et utilisez ContentPropertyAttribute pour la classe. Pour moi ça m'a aidé. J'ai eu le problème dans VS 2017.

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

Bien que les références manquantes aient été mentionnées comme solution, j’ai découvert qu’il pouvait également être nécessaire de résoudre les ambiguïtés de classe dans vos références.

Pour moi, le problème était dû à une bibliothèque externe qui avait défini sa propre ContentPropertyAttribute dans l'espace de nom System.Windows.Markup qui entraînait l'échec complet des attributs de contenu. Supprimer la référence résoudra le problème, mais si ce n'est pas une option, vous devrez alors configurer un alias namespace dans les propriétés de la référence.

0
Jason Lim

En plus d’ajouter des références déjà indiquées, je devais fermer et rouvrir la solution. Si même cela ne résout pas le problème, redémarrez Visual Studio.

0
Julio Nobre

Il semble donc que les fées du codage ont passé la nuit, car cela semble fonctionner parfaitement sans que rien ait changé, très étrange, mais au moins, je peux continuer maintenant!

0
NAJ