Windows Phone XAML: Как предотвратить прокрутку страницы, когда клавиатура скользит в

StackOverflow https://stackoverflow.com//questions/24013583

Вопрос

Я хотел бы создать Windows Phone 8.1 Silverlight / XAML UI, содержащий поисковую почту, аналогичную тому, которое используется в Cortana.Текстовое поле должно быть в нижней части страницы и прокрутить клавиатуру, как только она получает фокус.Остальная часть моей страницы не должна двигаться вообще.Cortana Ui делает именно это, но я не смог воссоздать это поведение в моем приложении.Я нашел решения, которые требуют вручную изменить размер моих контейнеров пользовательского интерфейса, когда текстовое поле получает фокус, но это необходимо для оценки размера клавиатуры, что может измениться с разными разрешениями экрана, а также создает короткую анимацию до того, как содержимое вернутся на место.Так как можно предотвратить прокрутку своих страниц от прокрутки, когда клавиатура скользит?

Это было полезно?

Решение

Нет действительно отличного способа сделать это. Cortana - это система UI и на любое существующее пространство приложений. Для вашего приложения предполагается, что любой пользовательский интерфейс в вашем приложении является частью всего приложения. Для ввода, где отображается программная клавиатура, содержимое приложения прокручивается, чтобы убедиться, что контекст не потерян. Это поведение по умолчанию, которое вы не можете изменить.

У вас есть доступ к тому, когда область клавиатуры отображается / скрывается ( windows.ui.viewmanagement.inputpane.inputpaneshwase [Скрытие] ) и может знать, что будет окклюдированный прямоугольник. Используя это событие, вы можете сделать там некоторые вещи, однако, пока ваша UI является частью основного визуального дерева, ваше приложение все равно будет прокручивать.

Одна вещь, которую вы можете попробовать, - это поставить эту текстовую область в всплывающем слое, который является не частью вашего основного пользовательского интерфейса приложения (что означает, что он не работает для любого визуального дерева). Безременные всплывающие окна не участвуют в основном поведении прокрутки UI. Если вы сделали это, наряду с прослушиванием, когда входная панель отображается / скрывается, вы можете достичь того, что вы хотите.

Другие советы

Нет супер чистого способа сделать это, но есть обходные пути, которые все еще работают в Silverlight.Когда клавиатура открывается, она будет анимировать трансляционную форму на корнепопливках.Поэтому, когда вы получаете фокус на элементе, подпишитесь на LayoutUpdates для страницы и проверьте значения преобразования.

Смотрите детали / код здесь: Как определить смещение клавиатуры

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top