按钮有这么删除个事件: <Button Content="移除" Background="AliceBlue" CommandParameter="{Binding}" Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Path=DataContext.RemoveItemCommand}"
Visibility="{Binding State, Converter={StaticResource RemoveItemConverter}}"/>
我想在右键菜单中加个删除 我怎么调用哪个事件
<MenuItem Header="移除" />
希望有人帮助我一下
<MenuItem Header="移除" Command="{Binding RemoveItemCommand}" CommandParameter="{Binding}"/>
不行 点击了还是没反映
@菜鸟的悲伤: 有设置DataContext 吗?
把完整的代码贴出来看看。
@德年: <MenuItem Header="移除" Command="{Binding RemoveItemCommand, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Path=DataContext.CancelItemCommand}" CommandParameter="{Binding}"/>
@德年: <DataGrid.ContextMenu>
<ContextMenu Name="dgmenu1" StaysOpen="true" >
<MenuItem Header="开始" Command="{Binding StartHandleCommand}"/>
<MenuItem Header="停止" Command="{Binding StopHandleCommand}"/>
<MenuItem Header="移除" Command="{Binding RemoveItemCommand, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Path=DataContext.RemoveItemCommand}" CommandParameter="{Binding}"/>
<MenuItem Header="恢复" Command="{Binding RestoreItemCommand}" CommandParameter="{Binding}"/>
</ContextMenu>
</DataGrid.ContextMenu>
@菜鸟的悲伤: 你是在哪里设置DataContext的?
这是demo
<Window x:Class="Test.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Window.ContextMenu> <ContextMenu> <MenuItem Header="移除" Command="{Binding RemoveItemCommand}" CommandParameter="{Binding}"/> </ContextMenu> </Window.ContextMenu> <Grid> </Grid> </Window>
/// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.DataContext = new ViewModel(); } } public class ViewModel { public ICommand RemoveItemCommand { get { return new RelayCommand<ViewModel>(RemoveItemExecute); } } public void RemoveItemExecute(ViewModel viewModel) { MessageBox.Show("Test"); } }
@德年: public MediaItemGrid()
{
InitializeComponent();
_viewModel=new MediaItemGridViewModel();
this.DataContext = _viewModel;
这里啊
@菜鸟的悲伤: 这个右键菜单应该是DataGridRow的右键菜单才对吧
<UserControl.Resources> <ContextMenu x:Key="RowMenu" > <MenuItem Header="移除" Command="{Binding RemoveItemCommand,RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}}" CommandParameter="{Binding}"/> </ContextMenu> <Style TargetType="{x:Type DataGridRow}" BasedOn="{StaticResource {x:Type DataGridRow}}"> <Setter Property="ContextMenu" Value="{StaticResource RowMenu}" /> </Style> </UserControl.Resources>
@德年: 命令没有执行有两种可能,一是DataContext对不上,二是CommandParameter绑定错误。
你把 RemoveItemCommand 这个命令改为不带参数的命令, 调试下,看这个命令会不会执行?如果仍不执行就是DataContex对不上,如果执行就是CommandParameter没正确绑定
@德年: 是的
@德年: 嗯 我在自己研究研究吧 谢谢你这一上午的帮助 我要是懂一点wpf估计也早弄出来了 我是一点wpf没接触过 这个是在别人的项目上添加个右键菜单功能 我这也是摸索着写那