Pergunta

Eu gostaria de criar um Windows Phone 8.1 Silverlight/XAML INTERFACE de usuário que contém uma searchbox semelhante ao utilizado em Cortana.A caixa de texto deve estar na parte inferior da página e desloque-se para cima com o teclado, uma vez que recebe o foco.O resto da minha página não deve mover-se em tudo.A Cortana UI faz exatamente isso, mas eu não tenho sido capaz de recriar-se que o comportamento em meu aplicativo.Eu ter encontrado as soluções de que necessitam para redimensionar manualmente meu UI Recipientes quando a caixa de texto recebe o foco, mas que requer para estimar o teclado de tamanho, o que pode mudar com diferentes resoluções de tela e também produz um curta de animação antes que o conteúdo está de volta no lugar.Então, como é possível evitar que o meu páginas de conteúdo a partir de rolagem para cima, quando o teclado slides?

Foi útil?

Solução

Não há realmente uma ótima maneira de fazer isso.Cortana é a INTERFACE do usuário do sistema e através de qualquer aplicativo existente no espaço.Para o seu aplicativo, é assumido que qualquer INTERFACE do usuário em seu aplicativo é uma parte de todo o aplicativo.Para a entrada, onde o teclado de software mostra, o conteúdo do aplicativo é deslocado para a vista, para garantir contexto não é perdido.Este é o comportamento padrão, você não pode realmente mudar.

Você tem acesso ao teclado área é de mostrar/ocultar (O Windows.INTERFACE de usuário.ViewManagement.InputPane.InputPaneShowing[Esconder] e pode saber o que ocluída retângulo será.Usando este evento você pode ser capaz de fazer algumas coisas lá, no entanto, desde que a INTERFACE do usuário é uma parte principal do visual árvore, o aplicativo ainda vai rolar.

Uma coisa que você pode tentar é colocar que a área de texto em um pop-up camada que é não uma parte de seu principal aplicativo de INTERFACE do usuário (o que significa que é unparented para qualquer árvore visual).Unparented popups não participar na INTERFACE de usuário principal comportamento de deslocamento.Se você fez isso, juntamente com a escuta para quando a entrada do painel é de mostrar/ocultar você pode ser capaz de conseguir o que você quer.

Outras dicas

Não há uma maneira super limpa de fazer isso, mas há soluções alternativas que ainda funcionam em silverlight também.Quando o teclado abrir, ele animará um translateTransform no rootApplicationframe.Então, quando você se concentra em um elemento, inscreva-se para layoutupdates para a página e verifique os valores de transformação.

ver detalhes / código aqui: Como determinar o deslocamento do teclado

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top