首页 新闻 会员 周边 捐助

wpf 右键菜单

0
悬赏园豆:5 [已解决问题] 解决于 2014-01-15 12:33

 按钮有这么删除个事件:  <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="移除"  />

 

希望有人帮助我一下
                                     

菜鸟的悲伤的主页 菜鸟的悲伤 | 初学一级 | 园豆:20
提问于:2014-01-15 09:57
< >
分享
最佳答案
0

<MenuItem Header="移除" Command="{Binding RemoveItemCommand}" CommandParameter="{Binding}"/>

收获园豆:5
德年 | 小虾三级 |园豆:1010 | 2014-01-15 10:36

不行 点击了还是没反映

菜鸟的悲伤 | 园豆:20 (初学一级) | 2014-01-15 10:56

@菜鸟的悲伤: 有设置DataContext 吗?

把完整的代码贴出来看看。

德年 | 园豆:1010 (小虾三级) | 2014-01-15 11:18

@德年:    <MenuItem Header="移除"   Command="{Binding RemoveItemCommand, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}, Path=DataContext.CancelItemCommand}" CommandParameter="{Binding}"/>

菜鸟的悲伤 | 园豆:20 (初学一级) | 2014-01-15 11:20

@德年:   <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>

菜鸟的悲伤 | 园豆:20 (初学一级) | 2014-01-15 11:27

@菜鸟的悲伤: 你是在哪里设置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");
        }

    }
德年 | 园豆:1010 (小虾三级) | 2014-01-15 11:30

@德年:     public MediaItemGrid()
        {
            InitializeComponent();
            _viewModel=new MediaItemGridViewModel();
            this.DataContext = _viewModel;

这里啊

菜鸟的悲伤 | 园豆:20 (初学一级) | 2014-01-15 11:33

@菜鸟的悲伤: 这个右键菜单应该是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>
德年 | 园豆:1010 (小虾三级) | 2014-01-15 12:06

@德年: 命令没有执行有两种可能,一是DataContext对不上,二是CommandParameter绑定错误。

你把 RemoveItemCommand 这个命令改为不带参数的命令, 调试下,看这个命令会不会执行?如果仍不执行就是DataContex对不上,如果执行就是CommandParameter没正确绑定

德年 | 园豆:1010 (小虾三级) | 2014-01-15 12:15

@德年: 是的

菜鸟的悲伤 | 园豆:20 (初学一级) | 2014-01-15 12:18

@德年: 嗯 我在自己研究研究吧  谢谢你这一上午的帮助 我要是懂一点wpf估计也早弄出来了 我是一点wpf没接触过 这个是在别人的项目上添加个右键菜单功能 我这也是摸索着写那

菜鸟的悲伤 | 园豆:20 (初学一级) | 2014-01-15 12:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册