gpt4 book ai didi

c# - 使用 Tab 键关注 DataGrid 中的 ComboBox

转载 作者:太空宇宙 更新时间:2023-11-03 16:04:02 27 4
gpt4 key购买 nike

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

通过调试,我发现当我使用 Key Tab 来到 ComboBox 单元格时,没有触发 ComboBox.GotFocus。

我尝试在 Combobox 初始化时强制 ComboBox 获得焦点,但无法访问代码隐藏 oO 中的组合框。

希望你能帮助我:)

最佳答案

我找到了使用这篇文章的方法: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 键从我的组合框中选择一个项目:)

关于c# - 使用 Tab 键关注 DataGrid 中的 ComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20174336/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com