0
我想创建一个利用命令的WPF应用程序,但我遇到了启用菜单按钮的命令问题。我正在做一些简单的验证,在这种情况下,“保存”按钮被禁用,直到用户创建一个新文档或加载一个现有的文档。WPF MVVM和命令
比方说我的视图模型看起来是这样的,其中视图模型将继承INotifyPropertyChanged的对象:
public ViewModel()
{
New = new RelayCommand(OnNew, CanNew);
Save = new RelayCommand(OnSave, CanSave);
}
ICommand m_cmdNew;
public ICommand New
{
get { return m_cmdNew; }
set
{
m_cmdNew = value;
OnPropertyChanged("New");
}
}
void OnNew(object param)
{
bCanSave = true;
// I read that this could resolve my problem.
CommandManager.InvalidateRequerySuggested();
}
bool CanNew( object param)
{
return true;
}
让我们假设我在做同样的事情为“保存”命令为好,唯一的例外是“CanSave “是这样的:
bool CanSave(object param)
{
return bCanSave;
}
我的XAML:
<Menu>
<MenuItem Header="Text">
<MenuItem Header="New" Command="{Binding New}"/>
<MenuItem Header="Save" Command="{Binding Save}"/>
</MenuItem>
</Menu>
的我遇到的问题是在更改变量“bCanSave”后,CanSave方法从未被调用。我怎样才能做到这一点?我知道我可以简单地创建一个属性,并使用INotifyPropertyChanged和XAML绑定,我可以简单地切换IsEnabled属性,但是从我阅读的内容来看,这看起来像很多工作,命令已经这样做了。