2016-03-20 12 views
0

Ich bin eine dering eine WPF-Anwendung. Ich codiere ein Raster (das 35 Textblöcke hat) - breites Kontextmenü. Wenn ich mit der rechten Maustaste auf die Maus klicke, muss ich erfahren, auf welchen Textblock ich geklickt habe. Aber click event gibt centext menu als Absender. Wie erreiche ich, auf welchen Textblock der Benutzer mit der rechten Maustaste klickt?Klicken Sie auf Event Sender in WPF

Mein XAML-Code ------------------------------------------- --------------------:

<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> 

Mein C# -Code -------------:

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

Haben Sie die 'OriginalSource'-Eigenschaft von MouseButtonEventArgs überprüft? – Clemens

+0

können Sie Ihren Code veröffentlichen? – Taterhead

+0

Mein Ereignis ist Mausklick auf die rechte Maustaste, so dass ich Mausbuttoneventargs nicht erreichen kann. – BilginAksoy

Antwort

0

Ich fand die Antwort. 1. Ich habe das Kontextmenu vom Raster in die Textblöcke verschoben. 2. Ich habe configmenopening Ereignis ausgelöst und fangen den Textblock, auf dem ich rght Maustaste klicken.

Hier ist der XAML-Code.

<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> 

Hier ist Code hinter.

TextBlock targetTextBlock; 

private void CustomContextMenuOpening(object sender, ContextMenuEventArgs e) 
     { 
      targetTextBlock = (TextBlock)sender; 
     } 
Verwandte Themen