Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用tab键将焦点放在DataGrid中的组合框上_C#_Wpf_Datagrid_Combobox_Setfocus - Fatal编程技术网

C# 使用tab键将焦点放在DataGrid中的组合框上

C# 使用tab键将焦点放在DataGrid中的组合框上,c#,wpf,datagrid,combobox,setfocus,C#,Wpf,Datagrid,Combobox,Setfocus,我在DataGridTemplateColumn中有一个组合框: <DataGrid x:Name="dataVoitures" Grid.Row="0" AutoGenerateColumns="False" ItemsSource="{Binding ListBagnoles}" CanUserAddRows="False"> <DataGrid.Columns> ...

我在DataGridTemplateColumn中有一个组合框:

     <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中添加新行时,我无法使用键盘从组合框中选择项目

通过调试,我发现当我使用键选项卡访问ComboBox单元格时,ComboBox.GotFocus不会被触发

我尝试在ComboBox初始化时强制ComboBox获得焦点,但无法访问oO背后代码中的ComboBox


希望您能帮助我:)

我找到了使用此帖子的方法:

我只是将FindVisualChildren方法添加到我的类中,并在触发combobox\u初始化的处理程序时强制将焦点放在combobox上:

    private void comboCarbu_Initialized(object sender, EventArgs e)
    {
        foreach (var combobox in FindVisualChildren<ComboBox>(dataVoitures))
        {
            if (combobox.Name == "comboCarbu")
            {
                combobox.Focus();
            }
        }
    }
private void comboCarbu\u已初始化(对象发送方,事件参数e)
{
foreach(FindVisualChildren(dataVoitures)中的var组合框)
{
if(combobox.Name==“comboCarbu”)
{
combobox.Focus();
}
}
}

现在,我可以使用tab键从组合框中选择一个项目:)

您可能对这个问题感兴趣: