Frage

Mein WPF-Anwendung ein echten Schmerzen immer. Ich habe ein Fenster erstellt und möchte eine andere Seite laden, wenn ich auf einen Knopf klicken. Ich nahm an, dies einfach sein würde, aber es scheint nicht zu sein. Ich schaffe es durch die Verwendung this.content = new UserPage() die andere Seite zu laden. Doch von dieser Benutzerseite, kann ich nicht auf mein Hauptfenster zurück. Ich kann nicht verwenden this.content weil das Fenster nicht ein Kind sein kann.

Daher suchte ich um und fand heraus, soll ich Navigation verwenden, Dinge zu machen, viel einfacher. Ich habe versucht, NavigationService.GetNavigationService(this) zu verwenden, aber das hat nicht funktioniert, wie es null immer zurückgegeben. Ich dachte, es ist, weil mein Hauptfenster von Window und nicht NavigationWindow abgeleitet ist. Gibt es eine Möglichkeit mein Fenster in ein Navigation zu konvertieren, ohne das Projekt erneut zu beginnen? Jedes Mal, wenn ich eine neue Datei zu erstellen, gibt es keine Navigation template - nur Fenster, Seite, User Control etc ...

Ich habe versucht, zu ersetzen manuell die XAML mit Navigation und es lief gut, aber die Navigation Methode noch null zurückgegeben. Es war an der Spitze eine Bar sowie mit Zurück- und Vorwärts-Pfeil (beide gesperrt), aber ich weiß nicht wirklich brauchen diese. Ich möchte nur die Navigate() Methode verwenden, so dass ich leicht zwischen den Seiten hin- und herschalten. Alle Ideen, was ich tun kann?

Vielen Dank für jede Hilfe, das macht mich verrückt! :)

War es hilfreich?

Lösung

  

Ich habe versucht, manuell die XAML ersetzen   mit Navigation und es lief gut,   aber die Navigation Methode noch   zurück null

Sie brauchen nicht auf die NavigationService, wenn Ihr Fenster ist bereits ein NavigationWindow. NavigationWindow hat eine Navigate Methode.

Sie können auch einen Standard-Window verwenden und eine Frame Kontrolle auf sich. Es funktioniert in etwa wie ein NavigationWindow, mit der Ausnahme, dass es in einem Fenster eingebettet ist

Andere Tipps

Skoder,

Ich bin nicht wirklich sicher, was Sie versuchen, zu tun, aber ich werde sehen, ob ich helfen kann. Erstens, es klingt wie Sie ein Navigation wollen. Wenn Sie nur eine Seite in Ihrer Anwendung wollen, dann Ihre erste Ansatz funktioniert, aber die Minute, die Sie sprechen über mehr als eine Seite und wollen von einer Seite zur anderen zu bewegen, Sie sprechen über ein Navigation.

Zweitens, wenn Sie ein Navigationsfenster wählen, sollte die XAML einfach sein, nur ersetzen Fenster mit Navigation und Sie sollten gut gehen, außer Sie jetzt müssen erkennen, dass Sie nicht mehr direkt den Inhalt des Fensters steuern. Stattdessen wird der Einbau-Navigation wird diese handhaben. Oh, und Sie keine explizite Navigation als die Klasse bereits eine bietet erstellen müssen. Sie müssen einfach nur navigieren:

 this.Navigate(new Url("pack://aplication:,,,/MyAssembly,component/MyPage.xaml", UriKind.Absolute));

alternativ Verwendung kann XAML verwenden:

Source = "pack://aplication:,,,/MyAssembly,component/MyPage.xaml"

An dieser Stelle finden Sie einige Schnittstelle benötigen, damit die Benutzer von einer Seite zur nächsten (zB Brotkrumen-Steuerung oder TreeView) bekommen, aber sobald sie da sind die Einbau-Fahrsteuerung ermöglicht es Ihnen, durch die navigieren Journal, das für Sie automatisch beibehalten wird. Das heißt, die meisten der grundlegenden Arbeit des Navigierens für Sie erledigt ist, müssen Sie nur um herauszufinden, wie der Benutzer navigiert uns auf einige Inhalte.

Aber an diesem Punkt können die Dinge ziemlich seltsam bekommen. Ich lief dies in mich. Da Sie nicht ein Gitter oder andere Inhalte ausdrücklich auf den Rahmen hinzufügen können, müssen Sie die Vorlage des Navigation verändern, um die zusätzliche Steuerelemente hinzufügen, die eine normale Anwendung bilden. Dinge wie Menüs und Symbolleisten sind nicht Teil des Standard-WPF Navigation.

Vergib diesen schamlosen wenig Eigenwerbung, aber ich habe ein Produkt gebaut, weil ich in diese Einschränkungen lief und es gab alles, was auf dem Markt nicht verfügbar. Sie können einen Blick auf die Demo nehmen:

http://www.teraque.com/products/explorer-chrome-suite /

Es wurde entwickelt, die professionelle Version der WPF Navigation sein, dass Microsoft kostenlos verschenkt. Werfen Sie einen Blick auf die Demo, wenn Sie nicht die Suite erwerben möchten, würde ich gerne Zeiger weg zu geben, wenn dies die Richtung ist, dass Sie Ihre Anmeldung in Anspruch nehmen möchten.

Mit freundlichen Grüßen

Donald Roy Airey

donald.roy.airey@teraque.com

Ich habe getan, aber nicht in der Lage, herauszufinden, wie das übergeordnete Fenster aus einer vb.net-Anweisung in der Seite neu geladen zu erhalten, die in dem Rahmen befindet. Ich habe einige Code in der Window_Loaded Funktion, die ich ausführen möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top