C# 无法从双击事件切换TabItem

C# 无法从双击事件切换TabItem,c#,wpf,tabcontrol,C#,Wpf,Tabcontrol,我正在尝试使用以下代码更改TabControl的选定选项卡: // Switch to configuration tab tabControl.SelectedItem = configTab; 虽然它在ButtonClick处理程序中工作正常,但在同一TabItem上的DataGrid双击处理程序中却什么也不做。我已将调试器设置为此行,可以看到SelectedItem属性的更改,但选项卡拒绝更改 编辑:更多代码 选项卡控件的定义如下: <Grid> <TabCon

我正在尝试使用以下代码更改TabControl的选定选项卡:

// Switch to configuration tab
tabControl.SelectedItem = configTab;
虽然它在ButtonClick处理程序中工作正常,但在同一TabItem上的DataGrid双击处理程序中却什么也不做。我已将调试器设置为此行,可以看到SelectedItem属性的更改,但选项卡拒绝更改

编辑:更多代码

选项卡控件的定义如下:

<Grid>
    <TabControl Height="Auto" HorizontalAlignment="Stretch" Name="tabControl" VerticalAlignment="Stretch" Width="Auto" Padding="0" SelectionChanged="BuildSummary">
        <TabItem Header="Configurations" Name="configTab">
            ...
        </TabItem>
        <TabItem Header="Temperature" Name="tempTab">
            ...
        </TabItem>
        <TabItem Header="Test List" Name="testTab">
            ...
        </TabItem>
        <TabItem Header="Summary" Name="summaryTab">
            ...
        </TabItem>
    </TabControl>
</Grid>
这是一个中断事件:

private void DoubleClick(object sender, MouseButtonEventArgs e)
{
    DataGridRow row = ItemsControl.ContainerFromElement(
        (DataGrid)sender, e.OriginalSource as DependencyObject) 
        as DataGridRow;

    if (row == null)
        return;

    /* code here prepares the configuration tab */
    ...

    // Switch to configuration tab
    tabControl.SelectedItem = configTab;
}

我遗漏了什么?

您能确认双击事件是否被击中吗

我相信,
DataGrid
将它的一些点击事件标记为已处理,因此它们不会传递到其他事件。您可能正在使用这些事件之一。如果是这样,您必须切换到在另一个级别处理双击事件,例如在
DataGridCell
上使用

e.handled = true;
阻止单击事件从DataGrid向上传播到当前TabItem


~BalamBalam

你能展示更多你的代码吗?特别是,如何获得
configTab
以及如何绑定/创建
TabControl.ItemsSource
?configTab是在XAML[br]TabControl中定义的TabItem的名称。ItemsSource也由XAML文件自动创建,它基于的元素是否到达BuildSummary?放入Try-Catch块以获取错误消息。将触发BuildSummary。在此方法中,tabControl.SelectedItem属性显示为配置选项卡。没有生成错误。哇。我会尝试设置e.handled=true,因为它可能会以某种方式触发base()。您可以尝试设置SelectedIndex。那些只是触角。但是,如果没有抛出错误,那么就必须有其他方法来实现这一点。
e.handled = true;