0

2つのTabItemを持つTabControlがあり、1つのTabItem内にDataGridがあります。TabItemクリックを処理しようとしていますが、機能しますが、「dataGrid1」の1行をクリックすると、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>TabItem.Headerを使用すると、MahAppsを使用しているため、パーソナライズを使用できません。スタイルosTabItemが壊れます。

4

2 に答える 2

0

MouseLeftButtonUpイベントでEventArgsを受け取ります。必要なものは何でも除外してください。

于 2012-09-19T04:39:14.510 に答える
0

MouseLeftButtonUpイベントはバブリングルーティングイベントです。s行にいるときにDataGrid、イベントがその祖先をバブリングし、対応するハンドラー(この場合は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 に答える