我正在使用 MDI 解决方案(请参阅http://wpfmdi.codeplex.com/)和 MVVM。
我使用一个 RelayCommand 将工具栏和/或菜单绑定到主 ViewModel,例如:
ICommand _editSelectedItemCommand;
public ICommand EditSelectedItemCommand
{
get
{
return _editSelectedItemCommand ?? (_editSelectedItemCommand = new RelayCommand(param => CurrentChildViewModel.EditSelectedItem(),
param => ((CurrentChildViewModel != null) && (CurrentChildViewModel.CanExecuteEditSelectedItem))));
}
}
但是,在子窗口中,要将按钮绑定到相同的功能,我需要另一个几乎相等的 RelayCommand,除了它直接调用方法 EditSelectedItem 和 CanExecuteEditSelectedItem 。它看起来像:
ICommand _editSelectedItemCommand;
public ICommand EditSelectedItemCommand
{
get
{
return _editSelectedItemCommand ?? (_editSelectedItemCommand = new RelayCommand(param => EditSelectedItem(),
param => CanExecuteEditSelectedItem))));
}
}
我需要大约 10 个,将来可能需要 50 个或更多这样的命令,所以我现在喜欢用正确的方式来做。有没有办法防止这种情况或更好的方法来做到这一点?