2016-05-02 15 views
0

Ich habe Wartung und Entwicklung über eine App geerbt, die ursprünglich ohne Xamarin.Forms geschrieben wurde, die UI-Schicht für Android und iOS die traditionelle Art und Weise mit Plattform-spezifischen Projekte und ein gemeinsames Projekt für meine Geschäftslogik.Verwendung von Xamarin.Forms in einem ursprünglich nicht-Xamarin.Forms-Projekt

Da die meisten der App-Bildschirm recht einfach sind, und ich verbringe einen unverhältnismäßig viel Zeit mit plattformspezifischen UI-Code Gerangel, wollte ich fragen, ob jemand Erfahrung mit der Integration Xamarin.Forms in einem Projekt, das nicht tat Verwenden Sie ursprünglich Xamarin.Forms.

Ich frage mich, ob es möglich war, bestimmte Bildschirme mit Xamarin.Forms zu ersetzen, vielleicht durch das Hosting sie manuell innerhalb der spezifischen Android Activity oder iOS-Bildschirm.

Ich möchte beginnen, indem Sie den nächsten Feature-Bildschirm als eine gemeinsame Xamarin.Forms "Seite" integrieren.

Hat jemand schon mal so etwas gemacht?

+0

Interessante Frage. Ich habe kürzlich das Gegenteil getan, alle einfachen Bildschirme einer Nicht-Formular-Anwendung in Formularen neu erstellt und die komplexeren als benutzerdefinierte Renderer angehängt. Ist das eine Option für dich? –

+0

Ein Total Refactoring ist im Moment keine Option, aber ein Rolling Refactoring ist. Aus diesem Grund möchte ich einfache neue Ergänzungen in XF anstelle von nativen implementieren. Wir sprechen von einer Art ListView-with-a-searchbox-and-button. Die Bildschirme interagieren nicht wirklich auf komplexe Weise miteinander. – bpylearner

Antwort

1

Wir haben dies aufgrund eines Redesigns der App getan. Wir haben die App mit MvvmCross und nativer Benutzeroberfläche entwickelt und sind zu Xamarin.Forms gewechselt. Wir warf alle Ansichten weg, behielt aber die ViewModels. Das heißt: Wenn die UI-Schicht von Ihrer ViewModel-Schicht abgekoppelt ist (mit Datenbindung), sollte es einfach sein, vollständig zu wechseln.

Ich würde nicht empfehlen, Formulare und native Activities/ViewControllers zu mischen, weil die Handhabung der Navigation kann ein Schmerz sein (vor allem unter Android). Wenn auf einem Bildschirm etwas komplex ist, sollten Sie dies in einem benutzerdefinierten Element mit einem benutzerdefinierten Renderer verschieben.

Zum Mischen von oben gibt es zwei minimalistische Beispiele:

+0

Leider ist die App so weit von einer richtigen MVC/MVVM-Implementierung entfernt, wie es Spaghetti-Code kann. In meinem Fall ist die Haupt-App wirklich nur ein Hub, der andere Aktivitäten aufruft, die wenig oder keine Interaktion mit dem Rest der App haben. Und absolut nichts ist komplex, weshalb XF ein Hauptkandidat wäre. – bpylearner

+0

Dann schauen Sie sich die verlinkten Beispiele an. Wenn Ihre Seiten wirklich unabhängig sind, könnte es funktionieren. –

+0

Ich bin schon drauf. Danke für die Proben. – bpylearner