2013-08-08 12 views
8

W naszej aplikacji Sklep Windows mamy pole tekstowe, a gdy aplikacja się rozpocznie to pole tekstowe zawsze się skupia. W scenariuszu komputerowym, który nie stanowi problemu, ale na tablecie urządzenie to bezpośrednio otworzy klawiaturę ekranową, która nie jest scenariuszem, który chcemy.Usuń fokus na pierwszym polu tekstowym

Próbowaliśmy ustawić ostrość na inny program sterujący za pomocą metody .Focus (FocusState), ale w jakiś sposób ostrość jest ustawiana z powrotem w polu tekstowym. Obaj ustawiliśmy fokus w metodzie LoadState lub OnNavigatedTo.

Tylko gdy mamy zegar, ustawiliśmy fokus z powodzeniem na inną kontrolę. Ktoś ma pomysły, jak ustawić fokus na inną kontrolę, lub najlepiej ustawić nie skupiać się na kontroli?

Odpowiedz

16

Zazwyczaj można ustawić Ostrość na dowolnym elemencie za pomocą TextBox.Focus(). Jednak odkryłem te same zachowania (autofocus na starcie), gdy umieścisz swój TextBox wewnątrz ScrollViewer lub FlyOut. Następnie trzeba ustawić IsTabStop na macierzystej-elementu:

<ScrollViewer IsTabStop="true"> 
    <TextBox /> 
</ScrollViewer> 
+2

nie jest to dokładna odpowiedź, ponieważ moje pole tekstowe nie było wewnątrz ScrollViewer lub rozwijanym. Chociaż naprawiłem go dodając przewijany widok z IsTabStop = true przed polem tekstowym i ustawiłem poziomą i pionową widoczność przewijania na zwijane. Z pewnością nie jest to najcudowniejsze rozwiązanie, ale dopóki nie dowiem się, co to powoduje, działa! Dzięki! – ChristiaanV

+0

IsTabStop to właściwość Control. Możesz więc ustawić go na dowolnej kontroli. Może po prostu spróbujesz ustawić na swoim obecnym elemencie rodzica (cokolwiek to jest). –

+0

To siatka wewnątrz LayoutAwarePage. Grid nie ma IsTabStop. LayoutAwarePage ma, ale to nie naprawia. – ChristiaanV

0

IsTabStop = „true” nie działa dla mnie. Moje rozwiązanie polega na wywołaniu funkcji UpdateLayout() programu scrollViewer przed ustawieniem fokusu na TextBox: scrollViewer.UpdateLayout();

textBox.Focus (Windows.UI.Xaml.FocusState.Programmatic);

0

Jeśli nie lubisz akceptowane odpowiedź z ScrollViewer można też to zrobić, aby usunąć ostrości:

_textBox.IsReadOnly = true; 
_textBox.IsReadOnly = false;