我在我的WPF应用程序中有一个上下文菜单,其中包含以下MenuItem:
<MenuItem Header="Email">
<MenuItem Command="Commands:CommandRepository.GenerateUserEmailCommand"
CommandParameter="{Binding Path=SelectedItems}"
Header="Email User">
</MenuItem>
<MenuItem Command="Commands:CommandRepository.GenerateManagerEmailCommand"
CommandParameter="{Binding Path=SelectedItems}"
Header="Email Manager">
</MenuItem>
</MenuItem>
问题在于当两个电子邮件命令都返回CanExecute = false时,两个命令都被禁用,但顶级菜单项“电子邮件”仍然可用。我知道我可能可以将顶部菜单项的IsEnabled绑定到其Children属性,然后使用转换器来决定何时应禁用它,但似乎这应该是自动发生的。这不是使用CommandBindings的全部意义吗(即它们为您处理IsEnabled)?有更好的方法来实现这一点吗?