Einen schönen guten Abend in die Runde,
nachdem ich hier mir sehr viele Anregungen holen konnte, wende ich mich wieder mal an Euch, auch, wenn es um C# und WPF / Prism und nicht um VBgeht.
Ich verwende WPF und Prism 6.
Ich habe in einem Modul in einer View ein TabControl mit dazugehörigem TabRegionAdapter. Funktionert.
Jetzt möchte ich aus einem ViewModel heraus die dazugehörige View erneut in der TabRegion öffnen (als komplett neue, eigenständige View) - und Parameter übergeben.
In der Modulklasse habe ich die View registriert: .
In dem entsprechenden Viewmodel kann ich die View einfach neu registrieren und dahin wechseln mit
Damit ist aber keine Parameterübergabe möglich.
Dann habe ich folgendes gefunden:
Zur Erklärung unter (1) kann ich mit
Übergebe ich in beiden Varianten die Parameter bekommt das ViewModel, aus welchem ich den Navigation-Request heraus aufrufe, die Parameter (und überschreibt mir meine Daten) und das neue ViewModel bleibt leer.
Ich habe dann gedacht, biste clever und registriere die View zusätzlich wie folgt
Nun wie gesagt meine Frage - wie kann ich diese View in der TabRegion neu öffnen und Parameter an das neue ViewModel übergeben? Oder soll ich eine neue Constructorinjektion hinzufügen und damit dann die Parameter übergeben?:
Danke für hilfreiche Anregungen und ein hübsches Wochenende
//Edit:
Ist zwar nicht wirklich elegant, aber habe nun kurz vor dem Einschlagen mich für die ConstructorInjektion entschieden. Dazu habe ich eine neue Klasse erstellt
diese habe ich registriert:
und dann im Anschluss als Übergabeparameter in den View - Constructor gehängt:
und vor dem NavigationRequest fülle ich die Parameter...
wie gesagt, nicht elegant. Aber jetzt müde, morgen kommt die Frau wieder und dann ist die Zeit zum spielen wieder vorbei...
nachdem ich hier mir sehr viele Anregungen holen konnte, wende ich mich wieder mal an Euch, auch, wenn es um C# und WPF / Prism und nicht um VBgeht.
Ich verwende WPF und Prism 6.
Ich habe in einem Modul in einer View ein TabControl mit dazugehörigem TabRegionAdapter. Funktionert.
Jetzt möchte ich aus einem ViewModel heraus die dazugehörige View erneut in der TabRegion öffnen (als komplett neue, eigenständige View) - und Parameter übergeben.
In der Modulklasse habe ich die View registriert: .
In dem entsprechenden Viewmodel kann ich die View einfach neu registrieren und dahin wechseln mit
Damit ist aber keine Parameterübergabe möglich.
Dann habe ich folgendes gefunden:
C#-Quellcode
- NavigationParameters param = new NavigationParameters();
- param.Add(...);
- (1) var addPersonView = _container.Resolve<AddPersonView>("AddPersonView", new ParameterOverride("Parasiten", param).OnType<AddPersonViewModel>());
- _regionManager.Regions["AdressenTabRegion"].Add(addPersonView);
- (2) _regionManager.RequestNavigate("AdressenTabRegion","AddPersonView", param);
Zur Erklärung unter (1) kann ich mit
new ParameterOverride
eine Property aus dem dazugehörigen ViewModel vorbelegen (also könnte ich da die Parameter hinschieben und daraus abrufen). Unter (2) ganz normal mitRequestNavigate
Parameter übergeben, welche in den INavigationAware - Methoden ausgewertet werden. Ich habe nun eben mit beiden probiert, daher stehen auch beide Varianten da, denn das Problem was ich habe ist:Übergebe ich in beiden Varianten die Parameter bekommt das ViewModel, aus welchem ich den Navigation-Request heraus aufrufe, die Parameter (und überschreibt mir meine Daten) und das neue ViewModel bleibt leer.
Ich habe dann gedacht, biste clever und registriere die View zusätzlich wie folgt
_container.RegisterType<ITabViewItem,AddPersonView>("AddKostentraeger")
und rufe dann die View unter diesem Namen ab, aber das funktioniert auch nicht wie gewünscht.Nun wie gesagt meine Frage - wie kann ich diese View in der TabRegion neu öffnen und Parameter an das neue ViewModel übergeben? Oder soll ich eine neue Constructorinjektion hinzufügen und damit dann die Parameter übergeben?:
Danke für hilfreiche Anregungen und ein hübsches Wochenende
//Edit:
Ist zwar nicht wirklich elegant, aber habe nun kurz vor dem Einschlagen mich für die ConstructorInjektion entschieden. Dazu habe ich eine neue Klasse erstellt
diese habe ich registriert:
und dann im Anschluss als Übergabeparameter in den View - Constructor gehängt:
und vor dem NavigationRequest fülle ich die Parameter...
wie gesagt, nicht elegant. Aber jetzt müde, morgen kommt die Frau wieder und dann ist die Zeit zum spielen wieder vorbei...
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „sronny“ ()