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:
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.
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:
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.
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.
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:
Peut être trouvé dans: "[VS InstallDir] \ Common7\IDE\ItemTemplates\VisualBasic\WPF\[InputLocale]\WPFWindow "
BR, Daniel