日期:2014-05-18  浏览次数:20772 次

wpf中Menu菜单项多个新建项如何处理
MenuResources.xaml 资源文件中定义的菜单有多个新建的项 command对应的都是新建的命令New
 
C# code
 <ContextMenu x:Key="AddMenu">  
  <MenuItem Header="新建文件夹"
              Command="ApplicationCommands.New">
    </MenuItem>

    <MenuItem Header="新建文本文件"
              Command="ApplicationCommands.New">
    </MenuItem>
    <MenuItem Header="新建word"
              Command="ApplicationCommands.New">
    </MenuItem>
</ContextMenu>



显示的窗体里定义
C# code

  <Window.CommandBindings>
    <CommandBinding Command="ApplicationCommands.New"
                    CanExecute="FolderCanAdd"
                    Executed="AddFolder" />
    <CommandBinding Command="ApplicationCommands.New"
                    CanExecute="TxtCanAdd"
                    Executed="AddTxt" />
    <CommandBinding Command="ApplicationCommands.New"
                    CanExecute="WordCanAdd"
                    Executed="AddWord" />
  </Window.CommandBindings>



由于定义了相同的Command=ApplicationCommands.New 在使用CanExecute判断的时候,几个菜单项的判断互相混合了 。
不知道如何处理这种情况好

------解决方案--------------------
回你这个问题真是够累的,以后问问题把想问的都一次问清楚.

InitializeComponet()之后,你就可以拿Resource了.
这时可以注册事件

C# code

        public MainWindow()
        {
            InitializeComponent();

            ContextMenu menu = this.Resources["AddMenu"] as ContextMenu;
            menu.ContextMenuOpening += (s, e) =>
                {
                    //to do
                };
        }