私は自分のアプリケーションをよりシンプルにするために自分自身を押し進めています。それを実行するためのいくつかの手順を実行しましたが、私はまったく興味深い問題が残っていますそれが私にとってユニークであるように感じる。私は何が間違っているのだろうかと思っています。MVVMのアプローチでICommand/RelayCommandを簡略化
モデルオブジェクトのコレクションを保持するViewModelがあります。ビューは、コレクション内のすべてのオブジェクトを表示するListViewです。モデルオブジェクトには、それらを操作するためのすべてのロジックがあります。各項目のListViewの行の中にはボタンがあり、モデルオブジェクトのメソッドを呼び出すにはそのボタンを配線する必要があります。
これを動作させるには、コマンド・バインディングを追加する必要がありますが、モデル・オブジェクトのパラメータをViewModel内部で使用できるように、親ウィンドウ・データ・コンテキストにはすべてそのモデル・オブジェクトのパラメータを渡します。親ウィンドウのデータコンテキスト)を呼び出して、渡されているモデルオブジェクトのメソッドを呼び出します。
これは本当に必要以上に複雑なようです。私はすでにやったことを捨ててもいいし、神聖な牛はいません。今年は一年で振り返り、自分が何をやっていたかを簡単に知ることができます。
親ウィンドウとDataContext.MyCommandプロパティを指定するRelativeSourceを使用してBindingを使用できます。 – Jeff
モデルのビューのボタンによって直接呼び出されるコマンドバインディングをモデルが作成しないのはなぜですか? – Phil
私はそれについても考えましたが、私のモデルにビジネスロジックを埋め込み、System.Windowsの.NETライブラリの一部(DependencyObject - 私はバインドできるようになりました)とSystem.Windows.Input (ICommand/RoutedCommand)はモデルオブジェクトを持つのが間違っているようです。 – Andrew