基本的にボタンが付いたテキスト ボックスであるカスタム コンポーネントがあります。ボタンは、テキスト ボックスに対してアクションを実行することになっています。たとえば、ボタンをクリックすると、テキスト ボックスにランダムな文字列が入力される可能性があります。
テキスト フィールドは、ViewModel のプロパティにバインドされます。基本的には次のようになります。
コンポーネントに一般的なコマンドを設定する最良の方法は何ですか?
RelayCommand
これまでに行ったことは、ViewModel にパラメーターを期待する1 つのジェネラルがあることです。各ボタンには、その単一のコマンドに設定されたコマンドがあり、CommandParameter
プロパティを使用して、実際に話しているテキスト フィールド コンポーネントに関する情報を追加します。次に、ViewModel はその情報を使用して正しいプロパティを見つけ、その値を変更します (バインディングを介してテキスト ボックスを更新します)。
これは問題なく機能しますが、関連するテキスト ボックスまたはコンテキストに関する情報を手動で挿入する必要があるのは嫌いです。理想的には、どのテキスト ボックスまたはバインドされたプロパティについて話しているかを既に知っているコンテキスト スコープ内でコマンドを実行したいと考えています。これを行う方法はありますか?
私が遭遇したもう 1 つの問題は、ボタン アクションをキー コマンドにバインドしたいということです。そのため、テキスト ボックスにフォーカスしてキー ショートカットを押すと、正しいボタンをクリックしたかのように動作するようにします。つまり、コマンドを実行して正しいコンテキスト情報を渡します。私の代替案は、これをコード ビハインドに入れ、基本的に現在のフォーカスからコマンド パラメーターを抽出することですが、よりクリーンなソリューションを希望します。
これをMVVMで機能させる良い方法はありますか?