| 

.NET C# Java Javascript Exception

4
Hallo,

hat jemand eine bessere Lösung, um bei Prism4 die Navigation zwischen den unterschiedlichen Modulen und Views effizienter zu gestalten als:
region.RequestNavigate(RegionNames.MainContentRegion, new Uri("MainWindowView", UriKind.Relative));


Irgendwie ist das sehr unhandlich nur mit strings zu arbeiten. Die Navigation der Anwendung kann sich ständig und wird erweitert. Der Benutzer kann ja von den Namen der WPF Views nichts wissen wenn er sich sein Menü selbst zusammenstellt. Der Entwickler muss immer irgendwo pflegen welche View in welchem Modul aufgerufen werden kann.

Hat sich damit schon mal jemand näher mit beschäftigt? Könnte man alle Views aus einer Assembly auslesen und anbieten oder über Attribute die Zuordnung vereinfachen?
News:
04.10.2013
dkb 71 1 3
3 Antworten
0
Solange die Navigation statisch ist, also immer ein festes Ziel hat, würd ich nicht zu viel Flexibilität fordern wollen. Im Gegensatz zu Deinem Codebeispiel habe ich neben einer RegionNames-Klasse noch eine ViewUri-Klasse. Ich hab mir aber auch einen eigenen RegionNavigationContentLoader gebaut, der nicht (wie der Default-Loader) verlangt, dass die Uris den ViewNames entsprechen müssen, sondern erlaubt, absolute ViewUris anzugeben, die dann im ContentLoader aufgelöst werden. Also statt "MainWindowView" gibts dann "view://foobar.com/Shell/MainContent". Das erinnert ein bisschen an REST und gibt mir mehr Strukturierungsmöglichkeiten.

Wenn Du tatsächlich eine dynamische Navigation benötigst, kannst Du das über Erweiterung der PRISM infrastruktur sicher auch erreichen. Deine Idee die Views oder ViewModels zu attributieren und darüber navigierbar zu machen, kann durchaus funktionieren. Du brauchst dann zusätzlich noch einen Dienst, der Dir alle Navigationsziele veröffentlicht, die Du dann z.B. dem User in irgendeiner Form zur Verfügung stellen kannst.

Schlussendlich ist das aber auch der Preis, den Du bei PRISM zahlst. Du erreichst ein hohes Maß an loser Kopplung über String-Identifier. Wie man damit dann umgeht, muss man im Einzelfall entscheiden. Ich kenne Deine Anforderungen nicht, aber vielleicht konnte ich Dir wenigstens ein paar Denkanstöße liefern.
04.10.2013
ffordermaier 8,4k 3 9
0
Hi,

Danke. Ich habe es befürchtet.

Darf ich fragen, was Du da so nutzt ausser Prism?

Ich suche einen flexible WPF Oberfläche in der man flexible UserControl oder View nachladen kann. Eben wie früher MDI Forms nur ohne Forms und Einzelfenster. Deshalb habe ich mich bisher an die Regions von Prism gehalten. Aber besonders die Navigation zwischen den lose gekoppelten Modulen, als auch deren Verwaltung in einer Anwendung in der später dynamisch z.B. Navigationsstrukturen anhand von Rollen und Rechten aufgebaut werden sollen, stellt mich vor Fragen. Alleine zu ermitteln welches der Name der letzten Aktiven View im RegionManager war scheint ja spannend zu sein lt. Foren. Dazu dir string basierende Navigation im RegionManager. Weiterhin möchte ich in Blend oder VS2012 auch grafisch die Controls und WPF Views editieren können. Das ist z.B: bei einigen Telerik COntorls, wenn man Sie als UserControls ausklinkt (z.B: TabControlItem) auch nicht immer möglich.
04.10.2013
dkb 71 1 3
dkb 71 1 3
Klar darfst Du fragen. Ich nutze neben PRISM eine Handvoll selbst entwickelter MVVM Klassen, Templates, ...Und eben ein paar wenige Erweiterungen zu PRISM, die ich selbst implementiert habe. Ich nutze außerdem für mein aktuelles Projekt das ModernUI (mui.codeplex.com) und bin gerade dabei, ein Sample fertigzustellen, das die PRISM Integration mit MUI schafft. Dazu sind meine paar PRISM Erweiterungen zwar nicht in vollem Umfang notwendig, ich hab sie dort aber eingebaut. Gerne können wir zusammen über eine flexiblere Navigationslösung nachdenken. Kannst Du Deine Anforderungen etwas ausführen?
ffordermaier 04.10.2013
PS: Anmerkungen bitte als Kommentare posten. Für die Aktualisierung Deiner Frage (z.B. Anforderungen) einfach die Frage editieren.
ffordermaier 04.10.2013
ModernUI sieht ganz nett aus. Wie sieht es da mit der Integration von Prism4 aus. Ist das eine gute Kombination oder der Grund warum DU da selber Erweiterungen programmierst?
dkb 07.10.2013
Die Prism-Integration von MUI hab ich selbst implementiert. kozw (der Maintainer von MUI) und ich stehen in Kontakt. Bissl wirds noch dauern, leider, aber dann ist die PRISM Integration von MUI auch OpenSource.
ffordermaier 07.10.2013
0
Früher gab es das Prism Template Pack für VS2010, was ich sehr hilfreich als Einstieg fand.
(Hier und hier)
Man kann jedes Modul einzeln in eine Assembly packen und nach Bedarf per Unity oder MEF nachladen.
07.10.2013
judgy 3,0k 1 1 8
judgy 3,0k 1 1 8

Stelle deine Programmieren-Frage jetzt!