2012-01-10 33 views
35

Ragazzi Sono nuovo a WPF.Le dichiarazioni parziali non devono specificare diverse classi di base

Ho una pagina wpf denominata StandardsDefault. Nel codice sottostante, StandardsDefault eredita Page, come tutte le altre pagine.

<Page x:Class="namespace.StandardsDefault" 

public partial class StandardsDefault : Page 

Ora ho creato una nuova classe CountryStandards che sta ereditando StandardsDefault invece di pagina.

<Page x:Class="namespace.CountryStandards" 

public partial class CountryStandards : StandardsDefault 

Non ho modificato XAML. Sto ottenendo l'errore come

"dichiarazioni parziali di 'CountryStandards' non deve specificare diverse classi di base"

Credo che il problema potrebbe essere che il progettista non eredita la stessa classe. Ma ho bisogno di implementare in qualche modo l'ereditarietà poiché ci sono molti metodi comuni che devono essere usati in molte pagine standard come CountryStandards

Qualcuno può darmi una mano?

+0

hai seguito tutti i passaggi in http://stackoverflow.com/questions/1297433/how-do-you-specify-a-different-base-class-in-xaml-files-silverlight per impostare la classe base di 'CountryStandards' correttamente? –

+1

Dopo aver corretto la dichiarazione con local: CountryStandards xmlns: local = "using: ..." in Visual Studio 2017, fare clic su Unload project, Reload Project per eliminare questo errore in Error List. – Eric

+0

Tutte le risposte non valgono ancora la pena essere accettate? –

risposta

2

Nella tua CountryStandards.xaml si dovrebbe scrivere

<StandardsDefault x:Class="namespace.CountryStandards"... 
+0

Perché i downvotes? Spiega i tuoi voti. – Cullub

48

Devi cambiare la tua CountryStandards XAML per:

<src:StandardsDefault x:Class="namespace.CountryStandards" 
    xmlns:src="NamespaceOfStandardsDefault" ... /> 

C'è un good article su eredita da una consuetudine Finestra/Pagina in WPF.

0

Assicurarsi che altre classi parziali non stiano estendendo una classe diversa.

public partial class CountryStandards : StandardsDefault 

public partial class CountryStandards : Page 

Devi farli estendere la stessa classe.

0

È necessario utilizzare StandardsDefault come nodo root poiché si sta creando un controllo utente. Poiché si utilizza la pagina come nodo radice, il compilatore C# si aspetta la pagina come base. ma nel tuo si utilizza StandardsDefault come base, quindi è necessario utilizzare StandardsDefault come nodo root, quindi funzionerà.

1

Bit di uno strano, e non è ancora stato elencato qui ... Ma poiché nessuna delle risposte precedenti è stata applicata perché avevo entrambi i miei file xaml e cs dichiarati correttamente, ho fatto quanto segue e mi è sembrato lavoro:

Passare alla cartella della soluzione o fare clic su Mostra tutti i file entro Visual Studio e eliminare entrambe le cartelle obj e bin, in questo modo Visual Studio rigenererà tutti i file per il progetto.

Il progetto dovrebbe ora essere compilato/eseguito correttamente.

Speranza che aiuti qualcuno - o forse me stesso in futuro.

Modifica: questa correzione di solito funziona se si verifica questo problema dopo aver modificato il tipo di pagina, ad esempio da una pagina di contenuto a una pagina Carousel.

Problemi correlati