Mik*_*ike 13 c# wpf contextmenu
我是WPF的新手,虽然我有一些WinForms的经验.我只想为我动态创建的几个对象添加ContextMenu,但我在VS工具箱中找不到ContextMenu组件.我找到的唯一方法是在运行时创建ContextMenu,如下所示:
ContextMenu pMenu = new ContextMenu();
MenuItem item1 = new MenuItem();
MenuItem item2 = new MenuItem();
//I have about 10 items
//...
item1.Header = "item1";
item1.Click += new RoutedEventHandler(item1_Click);
pMenu.Items.Add(item1);
item2.Header = "item2";
item2.Click += new RoutedEventHandler(item2_Click);
pMenu.Items.Add(item2);
//and so on
Run Code Online (Sandbox Code Playgroud)
但是,在WinForms中,我可以将ContextMenuStrip组件放到我的表单中,并且可以非常快速地定义项目和事件,而无需编写任何代码.在WPF中有可能吗?
Sam*_*ich 30
您可以定义ContextMenu资源并将其绑定到您需要的任何控件.看一下这个:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.Resources>
<ContextMenu x:Key="MyContextMenu">
<MenuItem Header="Send" />
</ContextMenu>
</Window.Resources>
<Grid>
<Button Name="a_button"
ContextMenu="{StaticResource MyContextMenu}" >
</Button>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
Mar*_* B. 11
另外你可以把命令放在menuItem上......
像这样:
<MenuItem Header="MyContextMenuItem
Command="{Binding Path=MyCommand}"
CommandTarget="{Binding
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type DataGrid}}}">
Run Code Online (Sandbox Code Playgroud)
如果在不同的控件上使用contextMenu,CommandTarget可能非常重要.我经常在这里使用FindAncestor来识别调用者.
| 归档时间: |
|
| 查看次数: |
49176 次 |
| 最近记录: |