Les gars, je suis nouveau à WPF.
J'ai une page wpf nommée StandardsDefault
. Dans le code ci-dessous, StandardsDefault
hérite de Page
, comme toutes les autres pages.
<Page x:Class="namespace.StandardsDefault"
public partial class StandardsDefault : Page
Maintenant, j'ai créé une nouvelle classe CountryStandards
qui hérite de StandardsDefault
au lieu de page.
<Page x:Class="namespace.CountryStandards"
public partial class CountryStandards : StandardsDefault
Je n'ai pas changé le XAML. Je reçois l'erreur comme
"Les déclarations partielles de
'CountryStandards'
ne doivent pas spécifier différentes classes de base"
Je pense que le problème est peut-être que le concepteur n’hérite pas de la même classe . Mais j’ai besoin d’implémenter l’héritage, car il existe de nombreuses méthodes communes qui doivent être utilisées dans de nombreuses pages standard telles que CountryStandards
.
Quelqu'un peut m'aider?
Vous devez modifier votre XAML CountryStandards en:
<src:StandardsDefault x:Class="namespace.CountryStandards"
xmlns:src="NamespaceOfStandardsDefault" ... />
Il y a un bon article sur l'héritage d'une fenêtre/page personnalisée dans WPF.
C’est un peu étrange, et cela n’a pas encore été listé ici ... Mais comme aucune des réponses ci-dessus n’est appliquée parce que mes fichiers xaml et cs ont été déclarés correctement, j’ai fait ce qui suit et cela a semblé fonctionner:
Allez dans le dossier de la solution ou cliquez sur le bouton Afficher tous les fichiers dans Visual Studio et supprimez les dossiers obj et bin , Ceci oblige Visual Studio à régénérer tous ses fichiers pour le projet.
Votre projet doit maintenant se construire/s'exécuter correctement.
J'espère que cela aidera quelqu'un - ou peut-être moi-même à l'avenir.
Modifier: Ce correctif fonctionne généralement si vous rencontrez ce problème après avoir modifié le type de page, par exemple ContentPage en CarouselPage.
Dans votre CountryStandards.xaml
, vous devriez écrire
<StandardsDefault x:Class="namespace.CountryStandards"...
Vous devez utiliser StandardsDefault en tant que nœud racine car vous créez un contrôle utilisateur. Depuis que vous utilisez une page en tant que nœud racine, le compilateur c # attend la page en tant que base. mais dans votre cas, vous utilisez StandardsDefault en tant que base, vous devez donc utiliser StandardsDefault en tant que nœud racine pour que cela fonctionne.
Assurez-vous que les autres classes partielles n'étendent pas une classe différente.
public partial class CountryStandards : StandardsDefault
public partial class CountryStandards : Page
Vous devez leur faire étend la même classe.