2015-06-19 4 views
5

Ich bin dabei, meine WP8.1-App auf W10 zu portieren, und es sieht so aus, als ob ich sie zu einer universellen Windows-App machen müsste. Nun, mir geht es gut wie für den Backend-Code, da ich 90% meiner Klassen (Models, ViewModels und die meisten meiner Hilfsklassen, Erweiterungsmethoden und Konverter) wiederverwenden kann.So passen Sie die App-Benutzeroberfläche auf verschiedenen Bildschirmen an W10 an

Das Problem ist für die UI: Ich verstehe, ich muss die App für verschiedene Bildschirme und Aspekt Rationen entwerfen, und ich weiß nicht, wie man das tatsächlich in Code implementieren. Ich meine, wie für die UI-Skalierung weiß ich, dass ich den VisualStateManager und AdaptiveTriggers verwenden kann, um die Eigenschaften der UI-Elemente, die ich anpassen möchte, auf jeder Bildschirmauflösung manuell zu setzen, oder ich kann einige Konverter verwenden, und das ist in Ordnung.

Was ich meine ist: Was ist die beste Methode, um die gesamte Benutzeroberfläche an verschiedene Auflösungen anzupassen?

Dies ist ein Beispiel: das gesamte Navigationsmuster ändert sich entlang der Benutzeroberfläche, wenn auf verschiedenen Bildschirmen:

People app on Windows 10

Wie Sie sehen können. Auf Telefonen haben wir die Kontaktseite, die die gesamte Benutzeroberfläche abdeckt, während wir auf Tablets und PCs die Kontaktseite haben, die nur einen Bruchteil der Benutzeroberfläche darstellt, und die Pivot-Seiten werden in ein anderes Feld auf der rechten Seite verschoben. Außerdem sind viele der UI-Elemente vollständig neu angeordnet. Und natürlich wird sich auch ein Back-End-Code auf View-Ebene ändern.

Nun, ich frage mich, was ist der beste Ansatz, um das Ganze zu tun.

Soll ich:

• Haben Sie eine einzelne XAML-Datei (für jede Seite) mit vielen VisualStates und solche Sachen, und versuchen, die Benutzeroberfläche für jede Bildschirmauflösung mit einem

• Haben verschiedene Projekte neu zu ordnen geteiltes Projekt (wie bei universellen W8.1-Apps), damit ich mich auf jedes Gerät auf der Benutzeroberfläche konzentrieren kann? Mit diesem Ansatz würde ich mich wohler fühlen, da ich in der Lage wäre, plattformspezifische UI-Elemente ohne Probleme zu entwickeln. Trotzdem habe ich nicht verstanden, wie man in VS2015 tatsächlich ein gemeinsames Projekt und verschiedene Projekte für jeden Gerätetyp erstellt.

• Verwenden Sie diesen Ansatz mit verschiedenen XAML-Seiten, die dieselbe Code-Behind-Datei verwenden (auch wenn ich nicht sicher bin, wie Sie dies implementieren und plattformspezifische Code-Behind-Teile implementieren).

• eine andere Methode

Ich meine, ich bin sicher, ich bin nicht die einzigen W8.1/WP8.1 Entwickler in Schwierigkeiten hier, ist es eine Art Rat, den ich verwenden kann? Ich habe bereits alle MVA-Videos über die W10-Entwicklung gesehen, aber sie sind dort nicht in die Implementierungsdetails eingegangen.

Vielen Dank für Ihre Hilfe

Sergio

+0

Es gibt mehrere Auslöser, die Sie hinzufügen müssen: http://www.wintellect.com/devcenter/jprosise/using-adaptivetrigger-to-build-adaptive-uis-in-windows-10, https: // channel9 .msdn.com/Series/Developers-Guide-to-Windows-10-Preview/09 – magicandre1981

+2

Ich denke, es hängt davon ab, mit was Sie sich wohl fühlen. Sie unterscheiden sich nicht sehr in Bezug auf die Leistung und es gibt keine wirklich gute Praxis Ich führe meine Entwicklung im Universal-Stil fort, das ist eine gemeinsame Code-Basis und verschiedene XAML-Seiten, weil ich damit zufrieden bin. Ich würde das Gleiche vorschlagen, weil ich auf einer einzelnen XAML-Seite für verschiedene Plattformen/Auflösungen arbeite scheint keine gute Idee in Bezug auf Benutzerfreundlichkeit und Lesbarkeit für mich zu sein. Gehen Sie für das, was Sie bereits wissen. –

+0

Stimme völlig zu. Getrennte Projekte sind besser, besonders wenn Sie ein komplexes Layout und viele Funktionen haben, die sich zwischen PC und Telefon unterscheiden. – fillobotto

Antwort

1

Diese beiden Screenshots sind nicht unbedingt so unterschiedlich, wenn Sie die SplitView Control und die RelativePanel Control betrachten.

Weitere Informationen finden Sie unter this //build talk.

+0

Hallo Peter, danke für deine Antwort. Ich habe das Video gesehen und das RelativePanel sieht gut aus. Ich denke immer noch, dass ich mit zwei separaten Ansichten für Telefone und Tablets/PCs bequemer sein könnte, aber ich kann mir viele Situationen vorstellen, in denen diese Kontrolle nützlich wäre. Was mein Navigationsproblem anbetrifft, kann ich sehen, dass ich den falschen Eindruck hatte: Sie verwendeten nicht wirklich zwei separate Frames, sondern nur ein anderes SplitView-Steuerelement, das mit VisualStates angezeigt/minimiert wurde :) – Sergio0694

2

Es hängt wirklich von Ihrem Projekt. Wenn sich eine Benutzeroberfläche nicht zu stark ändert, würde ich definitiv AdaptiveTriggers verwenden. Sie können viel mit sehr wenig XAML machen. Schauen Sie sich die Microsoft-Beispielcode, wenn Sie nicht bereits haben: https://github.com/Microsoft/Windows-universal-samples/tree/master/xaml_responsivetechniques

Wenn es drastisch verändert sich, Sie kann tun es mit AdaptiveTriggers, aber es ist wahrscheinlich einfacher, mehrere XAML-Dateien. Eine neue Möglichkeit, dies in Win10 zu tun, ist die Verwendung von DeviceFamily.Im Wesentlichen erstellen Sie einfach einen Ordner namens "DeviceFamily-Mobile", und halten Sie eine XAML-Ansicht mit dem gleichen Dateinamen dort. Weitere Informationen: http://sharpgis.net/post/2015/04/01/Creating-DeviceFamily-specific-layouts-in-a-Universal-App

+0

Ja, das Problem dabei ist, dass ich auf diesen Seiten keine anderen Steuerelemente verwenden konnte, da der Code-Behind immer gleich ist. Deshalb habe ich über die vielen Köpfe und das geteilte Projekt nachgedacht, obwohl ich in VS2015 noch nicht herausgefunden habe, wie das geht. Außerdem müsste ich das gesamte Navigationsmuster ändern, und damit würde ich besser mit verschiedenen Projekten arbeiten können wie mit W8.1/WP8.1 Universal Apps. Ist das immer noch möglich, obwohl die neuen universellen Apps eine einzige binäre Ausgabedatei haben? – Sergio0694

Verwandte Themen