2016-01-19 94 views
0

我有一個帶有此控件的窗口。如何將焦點設置爲文本框

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    ///elemnts in row 0 
    <StackPanel Grid.Row="1"> 
     <ToolBar x:Name="Toolbar"> 
      <Label Content="TextPattern" /> 
      <ComboBox></ComboBox> 
      <Button Command="{Binding ScanCommand}"> 
       <Image Source="/Images/sacn.png"></Image> 
      </Button> 
      <Button Command="{Binding FaxCommand}" x:Name="FaxButton" PreviewKeyDown="FaxButton_PreviewKeyDown"> 
       <Image Source="/Images/fax.png"></Image> 
      </Button> 
     </ToolBar> 
     <TextBox Width="{Binding ElementName=Toolbar,Path=ActualWidth}" x:Name="BodyTextBox" Focusable="True" TextWrapping="Wrap" AcceptsReturn="True" Text="{Binding Body}"></TextBox> 
    </StackPanel> 
    <StackPanel Orientation="Horizontal" Grid.Row="2" > 
     <Button Content="Save" Command="{Binding SaveCommand}"></Button> 
     <Button Content="Cancel" Command="{Binding CancelCommand}"></Button> 
    </StackPanel> 
</Grid> 

當我使用獲得焦點TAB鍵,它走faxbutton的壓片後savebutton。但是我想去BodyTextbox。

我使用PreviewKeyDown設置焦點。

private void FaxButton_PreviewKeyDown(object sender, KeyEventArgs e) 
    { 
     if(e.Key==Key.Tab) 
     { 
      BodyTextBox.Focus(); 
      BodyTextBox.SelectAll(); 
      FocusManager.SetFocusedElement(this, BodyTextBox); 
     } 
    } 

但是不要設置焦點。

回答

0

當加載用戶控件或Windowcontrol: 請在UserCOntrol_Load事件寫:

Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Input,

     new Action(delegate() 

         { 
          BodyTextBox.Focus(); // Set Logical Focus 

         Keyboard.Focus(BodyTextBox); // Set Keyboard Focus 

        })); 

它會自動對焦你也可以寫沒有任何標籤按鍵鍵盤上的內容..

希望這將工作的U ..

謝謝, 普利文

+0

謝謝,但我想重點當Faxbutton按鍵。 –

+0

KeyboardNavigation.TabIndex =「0」 – maddy7781

+0

將此項添加到您的文本框控件 – maddy7781

0

刪除PreviewKeyDown事件並添加KeyboardNavigation.TabNavigation =在工具欄中的「繼續」

<ToolBar x:Name="Toolbar" KeyboardNavigation.TabNavigation="Continue"> 
+0

謝謝,但是當我使用此代碼時,它會轉到文本框,但不會轉到工具欄中的元素。 –

+0

是的,它轉到工具欄中的全部元素。請清楚解釋你的問題。 –

+0

我在工具欄之前有多個控件,用'Tab'在控件之間移動。在工具欄的上次控件中,當按Tab鍵時,轉到保存按鈕而不是轉到BodyTextBox。 –