0

我有一个带有两个 TabItem 的 TabControl,在一个 TabItem 内我有一个 DataGrid。我正在尝试处理 TabItem 单击,并且它可以工作,但是,当我单击“dataGrid1”的一行时,也会触发 TabItem 单击的事件“TabItem_MouseLeftButtonUp”。见代码:

<TabControl Height="211" HorizontalAlignment="Left" Margin="33,29,0,0" Name="tabControl1" VerticalAlignment="Top" Width="417" >
        <TabItem Header="tabItem1" Name="tabItem1">
            <Grid />
        </TabItem>
        <TabItem MouseLeftButtonUp="TabItem_MouseLeftButtonUp">
            <DataGrid AutoGenerateColumns="True" Height="134" Name="dataGrid1" Width="307" />
        </TabItem>
</TabControl>

注意:我不能使用个性化<TabItem.Header>,因为我正在使用 MahApps,如果我使用 TabItem.Header 样式 os TabItem 将会中断。

4

2 回答 2

0

您将收到带有 MouseLeftButtonUp 事件的 EventArgs。只需过滤掉您需要的任何内容。

于 2012-09-19T04:39:14.510 回答
0

MouseLeftButtonUp事件是冒泡路由事件。当您在DataGrids 行时,事件通过其祖先冒泡并调用相应的处理程序,在您的情况下为TabItem_MouseLeftButtonUp 。TabItem

在您的TabItem_MouseLeftButtonUp事件中,您可以检查谁引发了事件,哪个控件是原点。如果不是TabItem什么都不做。

private void TabItem_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
     if(sender is TabItem)
     {
           //do the work
     }
}
于 2012-09-19T05:57:07.740 回答