schon seit Tagen stecken ... und dann fand ich, was war das ProblemPrism für Xamarin.Forms: Ich kann die Navigation lösen, es sei denn, wenn ViewModelLocator.AutowireViewModel = „True“
Ich habe zwei Seiten ein, falls der Tablette und der andere im Falle des Telefons. Da sie unterschiedliche Namen haben, funktioniert die Verwendung von ViewModelLocator.AutowireViewModel, um dasselbe Ansichtsmodell als Bindungskontext zu verwenden, nicht. In diesem Fall verwende ich den klassischen Binding-Kontext, da ich keine Viewmodel-Kopie für jede Seite erstellen wollte. Mein Problem war, als ich es ausführte, gibt mir eine Fehlermeldung "kein parameterloser Konstruktor für dieses Objekt Prisma definiert" Der Grund für diesen Fehler ist, dass das ViewModel einen Konstruktor hat, der ein NavigationService erwartet. Um diesen Fehler zu beheben, muss ich den Navigationsdienst als Argument entfernen, aber dann brauche ich es, damit ich damit navigieren kann.
Danke Mann, nur um zu bestätigen, dass Sie Ihren Vorschlag in Bezug auf das gleiche Viewmodel haben, meinen Sie mit "Ihrer Logik" in Ihrem Code snippit, dass es MainPageViewModel() zurückgeben kann? Und Sie manuell den INavigationService über die Konstruktoren übergeben? – BraveHeart
Ja, hier würden Sie Ihre Instanz des ViewModels zurückgeben. Das Problem ist, dass Sie immer noch dafür verantwortlich sind, den INavigationService zu erstellen und ihn in den ctor zu übergeben. Sie können sehen, was hier getan werden müsste https://github.com/PrismLibrary/Prism/blob/master/Source/Xamarin/Prism.Unity.Forms/PrismApplication.cs#L49 –
Deshalb sollten wir den ViewModelLoctor verbessern um Registrierungstypen zu unterstützen, nicht nur Instanzen. Ich habe dein Problem erneut geöffnet. Könnten Sie bitte das Szenario bestätigen und mir helfen, das für Sie zu beheben? –