我试图使用以下代码更改我的TabControl的选定选项卡:
// Switch to configuration tab
tabControl.SelectedItem = configTab;
虽然它在ButtonClick处理程序中工作得很好,但是它在同一个TabItem上的DataGrid DoubleClick处理程序中却什么也不做。我已经将调试器设置为这一行,并且可以看到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 Execute(object sender, RoutedEventArgs e)
{
// Switch to configuration tab
tabControl.SelectedItem = configTab;
}
这是一个破碎的事件:
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;
}
我遗漏了什么?
发布于 2011-08-31 17:03:20
使用
e.handled = true;
停止单击事件从DataGrid传播到当前TabItem
巴拉姆巴拉姆
发布于 2011-08-31 09:47:00
你能确认一下你的双击事件是否被击中了吗?
我相信DataGrid
将一些点击事件标记为已处理,因此它们不会传递到其他事件。很有可能你是在利用这些事件之一。如果是这样的话,您必须切换到在另一个级别处理双击事件,比如在DataGridCell
上。
https://stackoverflow.com/questions/7260280
复制相似问题