2015-07-20 72 views
2

在wpf項目中的窗口加載我試圖設置使用xaml的文本框的焦點。wpf設置鍵盤集中在使用xaml的文本框

我的文本框裏面有個grid.Here是我用

<Grid Name="gvLoginPage" 
     Margin="0,30,0,0" 
     FocusManager.FocusedElement="{Binding ElementName=txtUserName}"> 
<TextBox Name="txtUserName" 
      Focusable="True" 
      ToolTip="Please enter your user name" 
      Width="300" 
      Height="22" 
      VerticalContentAlignment="Top" 
      TextWrapping="Wrap" 
      Grid.Row="0" 
      Grid.Column="1" 
      BorderBrush="Black"> 
<Grid> 

此代碼設置焦點,但光標不閃爍,我不能鍵入任何代碼。

然後我遇到了這個問題Get and restore WPF keyboard focus他解釋說有兩種焦點,一種是邏輯焦點,另一種是鍵盤焦點,而FocusManager.FocusedElement設置邏輯焦點,而不是鍵盤焦點,因此我無法獲得閃爍的光標。

使用代碼後面我可以用

Keyboard.Focus(txtUserName); 

解決這個問題,但我想後面保持我的代碼少的possible.so請別人幫我使用XAML文本框上設置鍵盤焦點。

+0

http://stackoverflow.com/questions/19225443/set-focus-on-a-textbox-control-in-usercontrol-in-wpf –

+0

我已經檢查過這個鏈接,但我想知道有沒有辦法做到這一點只使用xaml.otherwise我也可以使用Keyboard.Focus方法。 – shreesha

+0

僅使用xaml設置焦點已在同一鏈接中提及。請檢查所有答案。 –

回答

1

據@ olitee的評論,我用我的GridView的可見性屬性爲火DataTrigger和Focusmanager.FocusedElement設置爲我Textbox.here是代碼

<Style x:Key="trgFocus" TargetType="TextBox"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=gvLoginPage, Path=IsVisible}" Value="true"> 
        <Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=txtUserName}" /> 
       </DataTrigger> 

      </Style.Triggers> 

現在我越來越閃爍cursor.Thanks @olitee和@Palak

相關問題