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