2016-11-01 67 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