2017-08-21 11 views
1

フォーム上の任意の要素を右クリックすると、その中にボタン付きのコンテキストメニューが表示されます。フォーム上の任意のコントロール上のコンテキストメニュー

形態のボタンの目的は、次のようになります。

X表示:名前(コンテキストメニューを表示する)、右クリックが行われたコントロールのを。 「私の名前は[X:要素の名前]」

答えて

3
表示するメッセージボックスが表示されるはずです「私の名前を表示する」私が1つのボタンでコンテキストメニューを表示するには、フォーム上の任意の要素の上で右クリックしたい、要約する

は、コントロールの種類ごとに暗黙のStyleを定義します。

<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

は私が必要なまさに、あなたにサーをありがとう! – RaceLt

関連する問題