繁体   English   中英

RelayCommand 未在 MenuItem 上触发单击 WPF MVVM

[英]RelayCommand not firing on MenuItem click WPF MVVM

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

这是 xaml:

<Menu Height="21"
      Margin="0,-2,0,0"
      VerticalAlignment="Top"
      Grid.ColumnSpan="2">
    <MenuItem Header="File" Command="{Binding ImportFileCommand}">Import</MenuItem>
</Menu>

在我看来,这是 model:

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 更改为

<Menu Height="21" Margin="0,-2,0,0" VerticalAlignment="Top" Grid.ColumnSpan="2">
    <MenuItem Header="File">
        <MenuItem Header="Import" Command="{Binding ImportFileCommand}" />
    </MenuItem>
</Menu>

在您的示例中,MenuItem 元素的“Import”内容隐式地创建了父 File MenuItem 的子 MenuItem。 此子 MenuItem 未定义 Command 属性,因此无法执行。 显然,父 MenuItem 上定义的命令的可执行性被子菜单扩展功能覆盖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM