MDIソリューション(http://wpfmdi.codeplex.com/を参照)とMVVMを使用しています。
次のように、1つのRelayCommandを使用してツールバーやメニューをメインViewModelにバインドします。
ICommand _editSelectedItemCommand;
public ICommand EditSelectedItemCommand
{
get
{
return _editSelectedItemCommand ?? (_editSelectedItemCommand = new RelayCommand(param => CurrentChildViewModel.EditSelectedItem(),
param => ((CurrentChildViewModel != null) && (CurrentChildViewModel.CanExecuteEditSelectedItem))));
}
}
ただし、子ウィンドウでボタンを同じ機能にバインドするには、メソッドEditSelectedItemとCanExecuteEditSelectedItemを直接呼び出すことを除いて、ほぼ同じ別のRelayCommandが必要です。次のようになります。
ICommand _editSelectedItemCommand;
public ICommand EditSelectedItemCommand
{
get
{
return _editSelectedItemCommand ?? (_editSelectedItemCommand = new RelayCommand(param => EditSelectedItem(),
param => CanExecuteEditSelectedItem))));
}
}
私は約10個、将来的には50個以上のそのようなコマンドが必要なので、今は正しい方法で実行したいと思います。これを防ぐ方法、またはこれを行うためのより良い方法はありますか?