Программная клавиатура исчезает с экрана, когда PasswordBox получает фокус - PullRequest
0 голосов
/ 18 февраля 2011

У меня есть PasswordBox на странице, который я пытаюсь настроить, чтобы автоматически фокусироваться при переходе на страницу.

У меня возникают проблемы, когда при программной фокусировке он принимает фокус, но клавиатура отключается.

Это вызывает проблему, поскольку пользователь должен щелкнуть PasswordBox, а затем снова включить его, чтобы использовать элемент управления.

Я попытался добавить этот код в событие Loaded страницы, ContentGrid.Loaded, OnNavigatedTo, и все они дают одинаковый результат.

Я попытался установить TabIndex / IsTabStop страницы и сам элемент управления, но, похоже, он не работает. Пароль - это единственный элемент, который имеет TabIndex.

<PasswordBox x:Name="pwbAnswer" Style="{StaticResource PasswordBoxStyle}" VerticalAlignment="Top" Grid.Row="3" 
                PasswordChanged="pwbAnswer_PasswordChanged" KeyUp="pwbAnswer_KeyUp" TabIndex="1" IsTabStop="True" />



 private void ContentGrid_Loaded(object sender, RoutedEventArgs e)
            {
                this.IsTabStop = true;
                pwbAnswer.Focus();
            }

1 Ответ

3 голосов
/ 19 февраля 2011

Вы должны использовать Loaded Event в PasswordBox.У меня такая же проблема.И затем вы можете установить Focus для отправителя, который является самим PasswordBox, если вы присоединены к этому событию загрузки.

<PasswordBox x:Name="pwbAnswer" Style="{StaticResource PasswordBoxStyle}" VerticalAlignment="Top" Grid.Row="3" 
                Loaded="PasswordBox_Loaded" PasswordChanged="pwbAnswer_PasswordChanged" KeyUp="pwbAnswer_KeyUp" TabIndex="1" IsTabStop="True" />



 private void PasswordBox_Loaded(object sender, RoutedEventArgs e)
            {
                PasswordBox box = sender as PasswordBox;
                box.Focus();
            }

или можете использовать обходной путь с событием LayoutUpdated.

<Page .... LayoutUpdated="ContentGrid_LayoutUpdated">
<PasswordBox x:Name="pwbAnswer" Style="{StaticResource PasswordBoxStyle}" VerticalAlignment="Top" Grid.Row="3" 
                 KeyUp="pwbAnswer_KeyUp" TabIndex="1" IsTabStop="True" />

 private void ContentGrid_LayoutUpdated(object sender, RoutedEventArgs e)
            {
                this.IsTabStop = true;
                pwbAnswer.Focus();
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...