我有以下ViewModel:
public ICommand AddNewFilm { get; set; }
public ICommand AddNewFilmWindow { get; set; }
public ICommand CancelNewFilm { get; set; }
public ICommand ShowFilm { get; set; }
public ICommand FilterFilm { get; set; }
public ICommand OrderFilm { get; set; }
public ICommand SearchFilm { get; set; }
public Repository<SpravaFilmuDbContext, FilmModel> FilmService { get; set; }
public FilmViewModel()
{
InitData();
InitCommands();
}
private void InitData()
{
this.Name = "Films";
this.Service = new FilmService();
base.LoadData();
this.NewItem = null;
this.ShowItem = null;
}
private void InitCommands()
{
this.AddNewFilm = new AddNewFilmCommand(this);
this.AddNewFilmWindow = new AddNewFilmWindowCommand(this);
this.CancelNewFilm = new CancelNewFilmCommand(this);
this.ShowFilm = new ShowFilmCommand(this);
this.FilterFilm = new FilterFilmCommand(this);
this.OrderFilm = new OrderFilmCommand(this);
this.SearchFilm = new SearchFilmCommand(this);
}
在AddNewFilmWindow中,我有这样的CanExecute:
public override bool CanExecute(object parameter)
{
if (this.ViewModel.NewItem == null)
{
return true;
}
else
{
return false;
}
}
当用户使用CancelNewFilm命令时,NewItem将设置为null。
现在问题:我想在使用CancelNewFilm之后通知AddNewFilmWindow它可以再次执行。我不能把它放到CancelNewFilmCommand中因为我没有引用AddNewFilmWindow,对吧?不知道如何解决这个问题。
感谢您的帮助。
答案 0 :(得分:0)
由于您已将ViewModel
传递给ICommand
,因此您可以清除NewItem
中的CancelNewFilmCommand
媒体资源。
通过引用NewItem
属性在CanExecute
覆盖AddNewFilmWindow
内应为空。