Le type 'Window' ne prend pas en charge le contenu direct

J'ai une solution WPF construite avec VS 2015 composée de plusieurs projets. Soudain, j'ai commencé à recevoir un avertissement en mode conception indiquant ce qui suit:

Le type 'Window' ne prend pas en charge le contenu direct.

Je comprends comment certains contrôles ne supportent pas le contenu direct, mais System.Windows.Window devrait. Je reçois le même avertissement avec UserControl, et pour autant que je sache, tout autre contrôle qui prend généralement en charge le contenu direct.

Tout compile et fonctionne bien, mais ayant le bleu souligne à travers tout mon XAML est gênant. Quelqu'un d'autre a rencontré ce?

Ci-Dessous est une capture d'écran:

entrez la description de l'image ici

30
demandé sur S.Akbari 2015-11-19 16:25:52

4 réponses

Assurez-vous de référencer le système.XAML. Nettoyer et reconstruire le projet. Fonctionne sur VS 2015 Mise à jour 1.

45
répondu Mark Richman 2016-02-18 21:28:37

Au moins dans un projet WPF IronPython, l'ajout de la référence System.Xaml au projet a résolu le problème pour moi:

entrez la description de l'image ici

Une chose importante à noter ici est que l'ajout apparemment tout référence sera le problème temporairement -- jusqu'à ce que Visual Studio est redémarré. System.Xaml, d'autre part, semble garder le problème à distance. J'ai même essayé de supprimer la référence, après quoi le problème est revenu au redémarrage de Visual Studio.

25
répondu Michael 2016-01-10 22:18:57

Pour moi, cette erreur se produisait parce que j'ai ajouté une fenêtre WPF à un projet de bibliothèque de classes.

Je ne sais pas pourquoi, mais Visual Studio ne nous donne pas la possibilité de sélectionner le modèle WPF Window à partir du "Ajouter un nouvel élément..." boîte de dialogue si le projet n'a pas été créé en tant qu'Application WPF. Au lieu de cela, il offre seulement la possibilité d'ajouter un WPF User Control. Pour cette raison, j'ai sélectionné le modèle User Control pour le nouvel élément, puis modifié le code source pour faire le XAML pour devenir un Fenêtre objet plutôt qu'un Contrôle de l'Utilisateur.

<!-- The new item was created as an UserControl, but what I needed was a Window object. -->
<UserControl>
   ...
</UserControl>

<!-- Changed it to Window and made other necessary adjustments. -->
<Window>
   ...
</Window>

Le problème était en fait dans le code-behind. Comme il a été créé en tant que User Control , la classe partielle de la fenêtre héritait de UserControl , comme suit:

public partial class MyWindow : UserControl
{
    public MyWindow ()
    {
        InitializeComponent();
    }
}

Pour le réparer, j'ai juste dû supprimer l'héritage, rendant ma classe window inherith de rien, comme ceci:

public partial class MyWindow
{
    public MyWindow ()
    {
        InitializeComponent();
    }
}

Après avoir supprimé L'héritage, Visual Studio n'a pas montré l'erreur "le type 'Window' ne prend pas en charge le contenu direct."plus.

3
répondu Ulysses Alves 2016-12-27 14:16:21

Au nom de @ mark Richman, j'ai édité Itemtemplate pour référencer automatiquement le système".XAML". Juste au cas où certains sont intéressés:

entrez la description de l'image ici

Peut être trouvé dans: "[VS InstallDir] \ Common7\IDE\ItemTemplates\VisualBasic\WPF\[InputLocale]\WPFWindow "

BR, Daniel

1
répondu dba 2017-04-12 14:09:06