2017-08-21 1 views
1

Wie würde ich ein Kontextmenü mit einer Schaltfläche anzeigen, indem Sie mit der rechten Maustaste auf ein Element im Formular klicken?Kontextmenü auf einem beliebigen Steuerelement auf Formular

Der Zweck einer Schaltfläche in einer Form wäre:

Anzeige eines x: Name einer Kontrolle auf dem ein Rechtsklick (ein Kontextmenü angezeigt wird) durchgeführt wird.

Zusammenfassend möchte ich auf Formular auf ein beliebiges Element klicken nach rechts Kontextmenü mit 1 Button „Zeigen Sie mir nennen“, um anzuzeigen, welche messagebox zeigen sollte die Anzeige: „Mein Name ist [x: Name des Elements]“

Antwort

3

definieren einen impliziten Style für jede Art der Steuerung:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplication1" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="300" Width="300"> 
    <Window.Resources> 
     <ContextMenu x:Key="cm"> 
      <MenuItem Header="Show name" Click="MenuItem_Click" /> 
     </ContextMenu> 
     <Style TargetType="Button"> 
      <Setter Property="ContextMenu" Value="{StaticResource cm}" /> 
     </Style> 
     <Style TargetType="TextBox"> 
      <Setter Property="ContextMenu" Value="{StaticResource cm}" /> 
     </Style> 
    </Window.Resources> 
    <StackPanel> 
     <Button x:Name="a" Content="a" /> 
     <TextBox x:Name="b" /> 
    </StackPanel> 
</Window> 

private void MenuItem_Click(object sender, RoutedEventArgs e) 
{ 
    MenuItem mi = sender as MenuItem; 
    ContextMenu cm = mi.Parent as ContextMenu; 
    FrameworkElement fe = cm.PlacementTarget as FrameworkElement; 
    MessageBox.Show(fe.Name); 
} 
+0

Danke Sir, genau das, was ich brauchte! – RaceLt

Verwandte Themen