我有command1,它打开的窗口,允许用户添加项目。在执行command1之后,我将更改CanExecute,使图形用户界面中的按钮变为灰色。
之后,用户可以添加/关闭(command2)该项目。在用户添加/关闭后,我想要“取消灰色”的按钮,以便用户可以添加另一个项目。
问题是我不知道如何通知command1,这样他就可以再次执行自己。我在command2的execute函数中尝试了CommandManager.InvalidateRequerySuggested();,但它不会从command1调用CanExecute。
有没有办法“取消灰显”按钮,这样它就可以再次使用?
如果有任何不清楚,请提出,我将提供更多的信息。
下面是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大致相同,但execute当然不同。
谢谢。
发布于 2016-05-04 05:53:18
向AddNewFilmWindowCommand添加一个方法:
internal void RaiseCanExecuteChanged() { CanExecuteChanged?.Invoke(...); }
在适当的时候从Command2调用新方法。
https://stackoverflow.com/questions/37014814
复制相似问题