web-dev-qa-db-fra.com

Pas de création d'une fenêtre WPF dans un projet DLL?

Y a-t-il une raison pour laquelle Visual Studio ne me laisse pas créer une fenêtre WPF dans un projet DLL?

Je l'ai "résolu" en créant une fenêtre dans un projet d'application et en la copiant dans mon projet DLL. J'ai également constaté que je pouvais simplement créer un UserControl et changer la classe de base en "Window".

Mais si je devais le faire de cette façon, c'est peut-être parce que je ne devrais pas le faire ...

54
Antoine Jeanrichard

Assurez-vous que le type de projet est WPF User Control Library lorsque vous créez votre projet.

Si ce n'est pas le cas, transformez simplement le fichier csproj et assurez-vous que le <ProjectTypeGuids> élément sous Project/PropertyGroup contient les GUID suivants

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Assurez-vous également de référencer PresentationFramework et System.Xaml dans votre projet, sinon vous n'obtiendrez aucun WPF dans votre code.

79
Florian Doyon

Vous pouvez essayer d'ajouter un nouvel élément de contrôle utilisateur WPF et le modifier en fenêtre.

Ajouter un nouvel élément-> WPF-> Contrôle utilisateur

En XAML:

Changement <UserControl> tag comme <Window>

Dans CS:

Changer la classe de base de System.Windows.Controls.UserControl à System.Windows.Window.

9
electron

Je le fais de cette façon: 1) créer "Application WPF" 2) supprimer App.xaml 3) modifier les propriétés du projet -> Type de sortie de l'application: vers la bibliothèque de classes (à l'origine, il existe une application Windows)

Sinon, vous obtiendrez des erreurs:

"Le fichier de projet de bibliothèque ne peut pas spécifier l'élément ApplicationDefinition"

"Le fichier de projet contient une valeur de propriété non valide"

7
Viliam

Que voulez-vous dire que Visual Studio ne vous permettra pas de créer une fenêtre WPF dans un projet DLL? Voulez-vous dire que si vous cliquez avec le bouton droit sur le projet, il n'y a pas d'option pour y ajouter une fenêtre ?

Si tel est le cas, je pense que cela signifie que vous avez créé un type de projet qui n'est pas un type de projet WPF. J'ai rencontré quelque chose de similaire il y a quelque temps lorsque je voulais mettre à niveau un projet WinForms pour utiliser WPF à la place - voir cette question pour plus d'informations.

4
Andy