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?
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.
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.
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.
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.