2016-03-20 8 views
0

私はwpfアプリケーションを探しています。私はグリッド(35のテキストブロックを持つ)全体のコンテキストメニューをコード化します。マウスの右ボタンをクリックすると、クリックしたテキストブロックを知る必要があります。しかし、クリックイベントは、センタクメニューを送信者として与えます。ユーザーがどのテキストブロックにマウスの右ボタンをクリックして到達するには?wpfでイベント送信者をクリック

マイXAMLコード------------------------------------------- --------------------:

<Grid> 
     <Grid.ContextMenu> 
      <ContextMenu> 
       <MenuItem Header="Hafta İçi" x:Name="btnWeekDay" Click="btnWeekDay_Click" /> 
       <MenuItem Header="Cuma" x:Name="btnFriday" Click="btnFriday_Click"/> 
       <MenuItem Header="Cumartesi" x:Name="btnSaturday" Click="btnSaturday_Click"/> 
       <MenuItem Header="Pazar" x:Name="btnSunday" Click="btnSunday_Click"/> 
       <MenuItem Header="İdari İzin" x:Name="btnAdminLeave" Click="btnAdminLeave_Click"/> 
       <MenuItem Header="Bayram/Tatil" x:Name="btnHoliday" Click="btnHoliday_Click" a/> 
      </ContextMenu> 
     </Grid.ContextMenu> 

私のC#コード-------------:

private void btnWeekDay_Click(object sender, RoutedEventArgs e) 
     { 
      MessageBox.Show(sender + e.Source.ToString()); 
     } 
+2

MouseButtonEventArgsの「OriginalSource」プロパティを確認しましたか? – Clemens

+0

あなたのコードを投稿できますか? – Taterhead

+0

私のイベントはマウスの右ボタンクリックですので、mousebuttoneventargsには届きません。 – BilginAksoy

答えて

0

答えが見つかりました。 1.グリッドのコンテキストメニューをテキストブロックに移動しました。 2.私はcontextmenuopeningイベントを発生させて、マウスクリックしたtexblockをキャッチしました。

ここはxamlコードです。

<Page.Resources> 
     <Style x:Key="txtBlockStyle" TargetType="{x:Type TextBlock}"> 
      <Setter Property="TextBlock.Background" Value="AliceBlue"/> 
     </Style> 
     <Style x:Key="borderStyle" TargetType="{x:Type Border}"> 
      <Setter Property="BorderThickness" Value="1"/> 
      <Setter Property="BorderBrush" Value="DarkGreen"/> 
     </Style> 
     <ContextMenu x:Key="txtBlockContextMenu"> 
      <MenuItem Header="Hafta İçi" x:Name="btnWeekDay" Click="btnWeekDay_Click" /> 
      <MenuItem Header="Cuma" x:Name="btnFriday" Click="btnFriday_Click"/> 
      <MenuItem Header="Cumartesi" x:Name="btnSaturday" Click="btnSaturday_Click"/> 
      <MenuItem Header="Pazar" x:Name="btnSunday" Click="btnSunday_Click"/> 
      <MenuItem Header="İdari İzin" x:Name="btnAdminLeave" Click="btnAdminLeave_Click"/> 
      <MenuItem Header="Bayram/Tatil" x:Name="btnHoliday" Click="btnHoliday_Click" /> 
     </ContextMenu> 
    </Page.Resources> 
..... 
    <Border Style="{StaticResource borderStyle}" Grid.Column="0" Grid.Row="1" > 
       <TextBlock x:Name="txtDate1" ContextMenuOpening="CustomContextMenuOpening" ContextMenu="{StaticResource ResourceKey=txtBlockContextMenu}"></TextBlock> 
      </Border> 

ここにコードがありません。

TextBlock targetTextBlock; 

private void CustomContextMenuOpening(object sender, ContextMenuEventArgs e) 
     { 
      targetTextBlock = (TextBlock)sender; 
     } 
関連する問題