2016-11-01 66 views
1

我有TabControl和四个TabItem s的窗口。当选择标签时,我需要将焦点更改为右侧textBox。这里有一些正确的方法吗? 我试图使用TabControl_SelectionChanged事件,但它看起来不起作用。更改为TabItem时的焦点

private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (((TabItem)((TabControl)sender).SelectedItem).Name == "tab2") 
    { 
     UpdateLayout(); 
     textBox2EAN.Focus(); 
    } 
    e.Handled = true; 
} 

但是,如果我点击tab2焦点在DataGrids的复选框列。

的TabItem:...

<TabItem Name="tab2" Header="2" Width="50"> 
    <Grid>  
     <DataGrid Name="dataGrid" Margin="1" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" 
       VerticalAlignment="Stretch" HorizontalAlignment="Stretch" MouseDoubleClick="dataGrid_MouseDoubleClick" 
       ItemsSource="{Binding RadkyDokladu.radky}" CanUserSortColumns="False" PreviewKeyDown="dataGrid_PreviewKeyDown" 
       AutoGenerateColumns="False" IsReadOnly="True" FontSize="12" SelectionMode="Single" > 
      <DataGrid.Columns> 
       <DataGridCheckBoxColumn Header="" Binding="{Binding ZASKRTNUTO}" Width="auto" /> 
       <DataGridTextColumn Header="Náz" Binding="{Binding Artikl_NAME}" Width="*"/> 
      </DataGrid.Columns> 
     </DataGrid> 
     <TextBox Name="textBox2EAN" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" Margin="1" 
       VerticalContentAlignment="Center" /> 
    </Grid> 
</Tabitem> 
+0

正确添加到该方法TabControl.SelectedIndexChanged事件? – Poody

+0

Im使用'' – Sk1X1

+0

在跳转到复选框之前,textBox是否获得焦点? – Poody

回答

2

您只需将其移动到XAML,并让控制的TabItem将焦点移至里面,当他们准备:

<TabItem Name="tab2" Header="2" Width="50"> 
    <Grid FocusManager.FocusedElement="{Binding ElementName=textBox2EAN}"> 
     <DataGrid /> 
     <TextBox Name="textBox2EAN" /> 
    </Grid> 
</TabItem> 
+0

谢谢!我之前尝试过,并没有工作...所以我再试一次,它看起来很有前途..再次感谢 – Sk1X1

+0

@ Sk1X1,没问题。如果你没有一些焦点切换代码,那么它应该工作。 – icebat