RelayCommand不在MenuItem上触发单击WPF MVVM

我的WPF表单上的菜单项运行导入例程,我已将命令属性绑定到视图模型中的ICommand属性,但由于某种原因,该方法不会触发。

这是xaml:

 Import  

这是我认为的模型:

  private ICommand importfilecommand; public ICommand ImportFileCommand { get { if (this.importfilecommand == null) { this.importfilecommand = new RelayCommand(parm => ImportFile()); } return this.importfilecommand; } } private void ImportFile() { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "Tab Files (*.tab)|*.tab*"; if (dialog.ShowDialog() == true) { // MessageBox.Show(dialog.FileName); } } 

这是我用于表单上所有按钮的模式,但菜单项不起作用。 我错过了什么或菜单项必须以不同方式完成吗?

谢谢。

将您的XAML更改为

      

在您的示例中,MenuItem元素的“Import”内容隐式创建父FileItemItem的子MenuItem。 这个子MenuItem没有定义Command属性,因此无法执行。 显然,子菜单扩展function会覆盖在父MenuItem上定义的Command的可执行性。