我有command1打开允许用户添加项目的窗口。执行command1后,我将更改CanExecute,以便GUI中的按钮变为灰色。
之后,用户可以添加/关闭(command2)项目。用户添加/关闭后,我想" un-grey"按钮,以便用户可以添加另一个项目。
问题是我不知道如何通知command1然后他可以再次执行自己。我试过CommandManager.InvalidateRequerySuggested();在command2的执行功能但不会从command1调用CanExecute。
有没有办法去" un-grey"按钮,以便它可以再次使用?
如果有任何不清楚的地方,请询问,我会提供更多信息。
以下是command1的代码:
public class AddNewFilmWindowCommand : CommandBase<ViewModelCollection<FilmModel>>
{
public override event EventHandler CanExecuteChanged;
public AddNewFilmWindowCommand(ViewModelCollection<FilmModel> viewModelCollection)
: base(viewModelCollection)
{
}
public override bool CanExecute(object parameter)
{
if (this.ViewModel.NewItem == null)
{
return true;
}
else
{
return false;
}
}
public override void Execute(object item)
{
this.ViewModel.NewItem = new FilmModel();
var onCanExecuteChanged = this.CanExecuteChanged;
if (onCanExecuteChanged != null)
{
onCanExecuteChanged(this, new EventArgs());
}
}
}
command2几乎相同,但执行当然是不同的。
谢谢。
答案 0 :(得分:0)
向AddNewFilmWindowCommand添加方法:
internal void RaiseCanExecuteChanged()
{
CanExecuteChanged?.Invoke(...);
}
在适当的时间从Command2调用新方法。