2013-11-24 45 views
2

我有一個DataGridTemplateColumn組合框:獲得焦點上具有ComboBox DataGrid中使用Tab鍵

 <DataGrid x:Name="dataVoitures" Grid.Row="0" AutoGenerateColumns="False" ItemsSource="{Binding ListBagnoles}" 
       CanUserAddRows="False"> 
     <DataGrid.Columns> 
     ... 
      <DataGridTemplateColumn Header="Carburant" SortMemberPath="Carburant.NomCarburant"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Carburant.NomCarburant}"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
       <DataGridTemplateColumn.CellEditingTemplate> 
        <DataTemplate> 
         <ComboBox x:Name="comboCarbu" ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, 
          Path=DataContext.ListeCarburants}" 
            SelectedItem="{Binding Carburant, UpdateSourceTrigger=PropertyChanged}" 
            DisplayMemberPath="NomCarburant" IsDropDownOpen="True" Initialized="comboCarbu_Initialized"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellEditingTemplate> 
      </DataGridTemplateColumn> 
      ... 
     </DataGrid.Columns> 

問題是,當我加在DataGrid中的一個新行,我不能從組合框中選擇一個項目鍵盤。

通過調試,我發現當我用Key Tab來到ComboBox單元格時,ComboBox.GotFocus沒有被觸發。

我嘗試強制ComboBox在Combobox初始化時獲得焦點,但無法訪問代碼隱藏oO中的組合框。

希望你能幫助我:)

+1

選擇一個項目你可能有興趣在這個問題上: http://stackoverflow.com/questions/746069/wpf-datagrid-datagridtemplatecolumn-tab-focus-issue – 2013-11-24 13:09:25

回答

0

我發現我的方式使用這篇文章:Find a WPF element inside DataTemplate in the code-behind

我只是FindVisualChildren方法添加到我的階級和力量將焦點轉移到組合框的ComboBox_Initialized處理程序被觸發時:

private void comboCarbu_Initialized(object sender, EventArgs e) 
    { 
     foreach (var combobox in FindVisualChildren<ComboBox>(dataVoitures)) 
     { 
      if (combobox.Name == "comboCarbu") 
      { 
       combobox.Focus(); 
      } 
     } 
    } 

現在,我可以從我的組合框tab鍵:)

相關問題