我的WPF表单上的菜单项运行导入例程,我已将命令属性绑定到视图模型中的ICommand属性,但由于某种原因,该方法不会触发。
这是xaml:
<Menu Height="21"
Margin="0,-2,0,0"
VerticalAlignment="Top"
Grid.ColumnSpan="2">
<MenuItem Header="File" Command="{Binding ImportFileCommand}">Import</MenuItem>
</Menu>
这是我的视图模型:
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);
}
}
这是我用于表单上所有按钮的模式,但菜单项不起作用。我错过了什么或菜单项必须以不同方式完成吗?
感谢。
答案 0 :(得分:4)
将您的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”内容隐式创建父FileItemItem的子MenuItem。这个子MenuItem没有定义Command属性,因此无法执行。显然,子菜单扩展功能会覆盖在父MenuItem上定义的Command的可执行性。