J'utilise WPF avec le modèle Model-View-ViewModel. Ainsi, mon code derrière les fichiers (.xaml.cs) sont tous vides, à l'exception du constructeur avec un appel à InitializeComponent. Ainsi, pour chaque fichier .xaml, j'ai un fichier .xaml.cs inutile et inutile.XAML sans le code .xaml.cs derrière les fichiers
Je jure que j'ai lu quelque part que si le code derrière le fichier est vide, sauf pour le constructeur, il existe un moyen de supprimer le fichier du projet tout à fait. Après recherche sur le net, il semble que la manière appropriée de le faire est d'utiliser le « x: Sous » attribut:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
x:Class="MyNamespace.MyClass"
x:Subclass="UserControl"
d:DesignWidth="700" d:DesignHeight="500">
Cela effectue les opérations suivantes dans le fichier généré .g.cs:
- Supprime le modificateur de classe "partial" sur MyClass.
- Ajoute la classe 'UserControl' à sa liste de sous-classes.
Semble parfait. En effet, si vous avez toujours le fichier .xaml.cs dans la construction, il ne compile plus à cause du partiel manquant - donc je pense que cela doit être correct. Toutefois, si je supprime le fichier superflue de la génération et de l'exécution, le contrôle n'est pas initialisé correctement (il est vide). C'est, je présume, parce que InitializeComponent() n'est pas appelé. Je vois que InitializeComponent n'est pas virtuel, il semble donc qu'il n'y aurait aucun moyen pour la classe de base de l'appeler (à moins d'utiliser la réflexion).
Ai-je raté quelque chose?
Merci!
Eric
Merci Scott. C'est certainement une meilleure approche. – Eric
+1 J'utilise aussi cette façon. Ça marche tellement bien que c'est presque magique. –
Remarque: est disponible dans WPF, mais pas Silverlight. –
MrSharps