web-dev-qa-db-fra.com

Les déclarations partielles ne doivent pas spécifier différentes classes de base

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?

46
Kuntady Nithesh

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.

57
nemesv

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.

7
Luke Alderton

Dans votre CountryStandards.xaml, vous devriez écrire

<StandardsDefault x:Class="namespace.CountryStandards"...
4
Maheep

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.

0
yClem