Frage

Ich möchte ein Windows Phone 8.1-Silverlight / XAML-UI erstellen, das ein Suchfeld ähnelt, das dem in Cortana verwendeten ähnlich ist.Das Textfeld sollte sich am unteren Rand der Seite befinden und mit der Tastatur nach oben blättern, sobald es den Fokus hat.Der Rest meiner Seite sollte sich überhaupt nicht bewegen.Die Cortana-Benutzeroberfläche tut genau das, aber ich konnte dieses Verhalten in meiner App nicht neu erstellen.Ich habe Lösungen gefunden, die erforderlich sein, um meine UI-Container manuell zu ändern, wenn das Textfeld den Fokus ruft, aber das erfordert, dass die Tastaturgröße geschätzt wird, die sich mit unterschiedlichen Bildschirmauflösungen ändern kann, und erzeugt auch eine kurze Animation, bevor der Inhalt wieder da ist.Wie kann es also verhindert werden, dass der Inhalt meiner Seiten nicht vor dem Bildlauf wird, wenn die Tastatur eintrifft?

War es hilfreich?

Lösung

Es gibt keine wirklich tolle Möglichkeit, dies zu tun. Cortana ist System-UI und über jeden vorhandenen App-Raum. Für Ihre App wird davon ausgegangen, dass jede Benutzeroberfläche in Ihrer App ein Teil der gesamten App ist. Bei der Eingabe, in der die Software-Tastatur zeigt, wird der App-Inhalt gescrollt, um sicherzustellen, dass der Kontext nicht verloren geht. Dies ist das Standardverhalten, das Sie nicht wirklich ändern können.

Sie haben Zugriff auf, wann der Tastaturbereich angezeigt wird / versteckt ( windows.ui.viewmanagement.inputpane.inputpaneshing [Versteck] ) und kann wissen, was das okklinge Rechteck sein wird. Mit diesem Ereignis können Sie dort möglicherweise einige Dinge tun, solange Ihre Benutzeroberfläche ein Teil des Hauptvisualbaums ist, Ihre App wird immer noch scrollen.

Eine Sache, die Sie ausprobieren können, ist, diesen Textbereich in eine Popup-Ebene aufzunehmen, die nicht ist einen Teil Ihrer Haupt-App-Benutzeroberfläche (dh er ist für jeden visuellen Baum unvergleichlich). Unparentierte Popups nehmen nicht an dem Haupt-UI-Scrollverhalten teil. Wenn Sie dies getan haben, können Sie zusammen mit dem Hören, wenn das Eingabemafel angezeigt wird, das Sie anzeigen / verstecken, können Sie erreichen, was Sie möchten.

Andere Tipps

Es gibt keinen super sauberen Weg, dies zu tun, aber es gibt Arbeitsgruppengehungen, die noch auch in Silverlight arbeiten.Wenn die Tastatur öffnet, wird ein TranslatTransform auf dem RootApplicationFrame angebört.Wenn Sie also auf ein Element konzentrieren, abonnieren Sie Layoutupdate für die Seite und überprüfen Sie die Transformationswerte.

Siehe Details / Kodex hier: So ermitteln Sie den Tastaturoffset

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top