[英]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.