Ist dies ein Fehler oder eine Funktion der asynchronen Navigation?
Es war von Entwurf, aber seit (v5.0.4) wurde überarbeitet, siehe unten Strömungsänderungen.
Wenn das so gewollt ist, gibt es eine bessere Möglichkeit, das Fragment View basierend auf ViewModel-Daten zu manipulieren?
Die Verwendung von v5.0.4 + sollte das gewünschte Verhalten ergeben, das Sie erwarten. Wo der Navigationsdienst auf Initialize()
Ihres ViewModel
erwartet wird, um zu vervollständigen, bevor die Lebenszyklusereignisse der Ansichten gestartet werden.
MvvmCross v5.0.0 - v5.0.3
Das Verhalten Sie war in MvvmCross 5.0.0-5.0.3 vorhanden sehen.Der Fluss war wie folgt:
ViewModel.Ctor
- (Ausgewählte Navigation nennt)
Init(parameter)
( veraltet, verwendet Reflektion, sondern typsicher initialisieren verwenden)
- (Selected Navigieren Anrufe)
ViewModel.ReloadState(savedState)
- (Ausgewählte Anrufe navigieren)
ViewModel.Start()
BeforeNavigate
(Navigation Ereignis)
*ViewDispatcher.ShowViewModel()
(Triggers anzuzeigen Lebenszyklen)
*ViewModel.Initialize()
AfterNavigate
(Navigation Ereignis)
BeforeClose
(NavigationServic e Ereignis)
ViewDispatcher.ChangePresentation()
AfterClose
(Navigation Ereignis)
MvvmCross v5.0.4 +
v5.0.4+ hat die Strömung verbessert und verändert die Navigationsreihenfolge:
ViewModel.Ctor
BeforeNavigate
(Navigation Ereignis)
*ViewModel.Initialize()
Init(parameter)
(veraltet verwendet Reflexion, sondern verwenden type safe Initialize)
ViewModel.ReloadState(savedState)
ViewModel.Start()
*ViewDispatcher.ShowViewModel()
(Triggers anzuzeigen Lebenszyklen)
AfterNavigate
(Navigation Ereignis)
BeforeClose
(Navigation Ereignis)
ViewDispatcher.ChangePresentation()
AfterClose
(Navigation Ereignis)
Weitere Informationen
Sie können die GitHub Ausgabe check out (#1968) um die Navigation angemeldet. Darüber hinaus können Sie die Pull-Anforderung (#1971) auschecken, die die Initialize
Bestellung für Version 5.0.4 aktualisiert.
können Sie die Methode "void OnViewModelSet()" verwenden, die in der Ansicht überschrieben werden kann. – hugoterelle
Danke, aber die 'OnViewModelSet' Methode wird leider vor den' OnCreateView' und 'Initialize' Methoden aufgerufen – nasibu