2011-02-18 103 views
0

我在頁面上有一個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(); 
      } 

回答

3

您必須使用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(); 
      } 
+0

感謝您的回覆。我切換到使用PasswordBox的Loaded事件,但是會出現相同的結果。鍵盤最初打開時間爲1/10秒,消失,並且該盒子仍處於選中狀態。 – 2011-02-18 22:26:32

相關問題