Domanda

Vorrei creare un Windows Phone 8.1 Silverlight / XAML UI contenente una casella di ricerca simile a quella utilizzata in Cortana.La casella di testo dovrebbe essere nella parte inferiore della pagina e scorrere con la tastiera, una volta che prende la messa a fuoco.Il resto della mia pagina non dovrebbe muoverti affatto.L'UI Cortana fa esattamente questo, ma non sono stato in grado di ricreare quel comportamento nella mia app.Ho trovato soluzioni che richiedono di ridimensionare manualmente i miei contenitori UI quando la casella di testo prende la messa a fuoco, ma ciò richiede di stimare la dimensione della tastiera, che può cambiare con risoluzioni dello schermo diverse e produce anche una breve animazione prima che il contenuto sia tornato in posizione.Quindi, come è possibile impedire che le mie pagine si contendano di scorrere, quando la tastiera scivola?

È stato utile?

Soluzione

Non c'è un ottimo modo per farlo. Cortana è l'interfaccia utente del sistema e su qualsiasi spazio di app esistente. Per la tua app, si presume che qualsiasi UI nella tua app sia parte dell'intera app. Per l'ingresso in cui mostra la tastiera del software, il contenuto dell'app viene scartato in vista per garantire che il contesto non sia perso. Questo è il comportamento predefinito che non puoi davvero cambiare.

Si ha accesso a quando l'area della tastiera sta mostrando / nascondendo ( windows.ui.viewmanagement.inputpane.inputPaneshowing [nascondigli] ) e può sapere cosa sarà il rettangolo occluso. Usando questo evento potresti essere in grado di fare alcune cose lì, tuttavia finché il tuo interfaccia utente fa parte del principale albero visivo, la tua app scorrerà ancora.

Una cosa che puoi provare è quella di inserire quell'area di testo in uno strato popup non una parte dell'UI della tua app principale (il che significa che non è promettente a qualsiasi albero visivo). I popup non comportati non partecipano al comportamento di scorrimento dell'interfaccia utente principale. Se lo hai fatto, insieme ad ascoltare quando il riquadro di input sta mostrando / nascondendo potresti essere in grado di ottenere ciò che desideri.

Altri suggerimenti

Non c'è un modo super pulito per farlo, ma ci sono soluzioni alternative che ancora funzionano anche in Silverlight.Quando si apre la tastiera, animerà un TranslateTransform sul rootApplicationFrame.Quindi, quando si è concentrati su un elemento, iscriviti a Layoutupdates per la pagina e controllare i valori di trasformazione.

Vedi i dettagli / codice qui: Come determinare l'offset della tastiera

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top