Wie erstelle ich eine Basisseite in WPF?

8

Ich habe entschieden, dass alle meine WPF-Seiten ein Routingereignis registrieren müssen. Anstatt

einzuschließen %Vor%

Auf jeder Seite habe ich beschlossen, eine Basisseite (namens BasePage) zu erstellen. Ich legte die obige Codezeile in meine Basisseite und änderte dann einige meiner anderen Seiten, um von BasePage abzuleiten. Ich komme nicht über diesen Fehler hinaus:

  

Fehler 12 'CTS.iDocV7.BasePage' kann nicht   Sei der Stamm einer XAML-Datei, weil sie es ist   wurde mit XAML definiert. Linie 1   Position   22. C: \ Work \ iDoc7 \ CTS.iDocV7 \ UI \ Qualität \ QualityControlQueuePage.xaml 1 22 CTS.iDocV7

Weiß jemand, wie man am besten eine Basisseite erstellt, wenn ich Ereignisse, Eigenschaften, Methoden usw. einfügen kann, die ich von jeder beliebigen wpf-Seite verwenden kann?

    
ScottG 02.09.2008, 15:45
quelle

5 Antworten

25

So habe ich das in meinem aktuellen Projekt gemacht.

Zuerst habe ich eine Klasse definiert (wie @Daren Thomas sagte - nur eine einfache alte C # -Klasse, keine zugehörige XAML-Datei), so (und ja, das ist eine echte Klasse - am besten nicht zu fragen):

%Vor%

Dann erstelle ich eine neue Seite und ändere die XAML-Deklaration wie folgt:

%Vor%

Also deklariere ich es als PigFinderPage im Namensraum "my". Alle seitenweiten Ressourcen, die Sie benötigen, müssen mit einer ähnlichen Syntax deklariert werden:

%Vor%

Schließlich wechseln Sie zum Code-Behind für diese neue Seite, und ändern Sie die Klassendeklaration so, dass sie von Ihrer benutzerdefinierten Klasse und nicht direkt von Page abgeleitet wird:

%Vor%

Denken Sie daran, es als eine partielle Klasse zu behalten.

Das ist ein Vergnügen für mich - ich kann eine Reihe von benutzerdefinierten Eigenschaften und Ereignissen in "PigFinderPage" definieren und sie in allen Nachkommen verwenden.

    
Matt Hamilton 02.09.2008, 22:58
quelle
3

Sehen Sie sich auch Attached Events an und prüfen Sie, ob Sie Ihr Ereignis anhängen können jede Seite in Ihrer App Könnte einfacher sein als eine benutzerdefinierte Zwischenklasse.

    
Matt Hamilton 02.09.2008 23:33
quelle
2

Ich bin mir nicht sicher, aber wenn ich auf Ihren Fehler schaue, würde ich versuchen, die Basisklasse mit nur c # (.cs) -Code zu definieren - erstellen Sie keinen mit XAML, nur eine Standard-.cs-Datei, die sich erweitert die WPF-Seitenklasse.

    
Daren Thomas 02.09.2008 19:12
quelle
2

Hier ist auch ein Tutorial! es ist ziemlich einfach und einfach.

    
Farzad J 20.09.2013 07:19
quelle
1

Kleines Update: Ich habe es nur versucht, und es hat nicht funktioniert. Er ist, was ich geändert habe, um das Problem zu lösen:

1.In vielen Foren lesen Sie, dass die Unterseiten von einer einfachen cs-Klasse ohne XAML erben müssen. Obwohl es funktioniert. Ich erben von einer normalen XAML-Seite ohne jedes Problem.

2. Ich habe den folgenden Code ersetzt:

%Vor%

mit

%Vor%

weil ich "clr-namespace" anstelle von "using" hatte, konnte Intellisense PigFinderPage erkennen, aber nicht den Compiler.

    
Myosotis 10.09.2015 06:48
quelle

Tags und Links