2011-08-24 61 views
1

我想为WPF项目中的某些控件添加一些上下文菜单。这本身就很容易。我想知道是否有可能在其中有文本框或日期选择器等控件,很像Access在单击表格中的单元格时可以通过文本框的值进行过滤。将控件添加到WPF中的上下文菜单

谢谢。

回答

2

你可以把你喜欢的东西放在ContextMenu以内,而不仅仅是MenuItems。我从来没有想过,但我想你可以用它作为Popup当有人右键单击它。您还可以添加事件等

<StackPanel> 
    <StackPanel.Resources> 
     <ContextMenu x:Key="myContextMenu"> 
      <StackPanel> 
       <TextBox Text="Some Text.."/> 
       <DatePicker/> 
       <Button Content="Click Me" Click="Button_Click"/> 
      </StackPanel> 
     </ContextMenu> 
    </StackPanel.Resources> 
    <TextBox Text="Display some controls on right click" 
      ContextMenu="{StaticResource myContextMenu}"/> 
    <TextBox Text="Display some controls on right click" 
      ContextMenu="{StaticResource myContextMenu}"/> 
</StackPanel> 

获得点击UIElement在事件处理程序

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Button button = sender as Button; 
    StackPanel stackPanel = button.Parent as StackPanel; 
    ContextMenu contextMenu = stackPanel.Parent as ContextMenu; 
    UIElement elementWithMenu = contextMenu.PlacementTarget; 
} 
+0

我想我可以定义像任何其他控件的事件。如果我想在许多控件上使用完全相同的菜单,我可以使用样式,并且我会使用eventArgs获取源代码? –

+0

是的,你可以在很多控件上共享这个'ContextMenu',你也可以添加事件并找到它被点击的控件 –

相关问题