RelayCommand
の非常に一般的な実装は、以下の行を含めるようだ:RelayCommandの一般的な実装はMVVMパターンに違反していますか?
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
CommandManager
は、WPFのコンポーネントであり、通常は私のコマンドはのviewmodelクラスに位置しているので、これは、私にとって非常に欠陥があると思われます。ビューモデルはビューを知っていると想定されていないので、異なるフレームワークなどで動作するはずです。これは私にとって非常に奇妙なようです。たとえば、WPF名前空間(たとえばPCL)を知らない余分なプロジェクトでビューモデルを分割すると、この実装は不可能です。
この実装はMVVMパターンに違反していますか?
またはRelayCommand
をあなたのビューにどういう形で置いていますか?
これに実際に欠陥がある場合は、この問題を解決するベストプラクティス実装がありますか?
あなたのviewmodelは参照用ではありません。だからOK。 – blindmeis
@blindmeisビューコンポーネントを使用することによって、ビューコンポーネントが参照されます。これは、非wpfアプリケーションでこのRelayCommand実装を使用しようとするとかなり明確になります。 –
私はあなたが別の非wpfアプリケーションでwpfのviemodelを使用すると思いません:)主な目的はUIなしのテストであり、動作します。 – blindmeis