フォーカスを与えるとのViewModelからテキストボックスにテキストを選択する方法
質問
私は、単純なWPFアプリケーションのコンテキストでMVVMを試しています。私はボタンに付加コマンドを持っています。テキストボックス内のテキストは、「正しくない」の場合、私はテキストボックスがフォーカスを取得したいと、すべてのそれは、選択した内容です。これを行うための唯一の方法は、直接見ると、私のViewModelでコマンドからの呼び出し、またはセットアップのいくつかの種類のViewModel火災やビューをリッスンし、そのイベントのいくつかの種類によってであるようです。そこからの眺めは、問題のテキストボックスに直接電話をかけることができます。
(どちらか私はMVVMのデカップリング本質内に収まるようにしようとしているが、少なくとも間接的に見ると話をすることなく、ViewModelに直接コードまたは、私はXAMLで宣言この動作を得ることができる方法はありませんように思えますインターフェイスまたはイベンティング)。私はまた、ビューモデルでビューへの参照を保持する必要があると思います。
ここで何が「ベストプラクティス」とみなされるであろう、そしてどのように切り離されたビューは本当に「本当の」MVVMアプリケーションでのviewmodelsからすることになっていますか?
解決
これは、直接あなたのUIのコントロールに関連付けられていたコードですので、私はそれが属するところ、この場合、ビューのコードビハインドがあると思います。あなたは、セットアップにそのようなイベントか何かをしたいかもしれません。以前のようにデカップリングとしてそのように、それはまだだ - 。ビューはとにかくのviewmodelを知っている、あなただけのコードビハインドのコードのいくつかのより多くのラインを持っている。
他のヒント
私は同じ問題に遭遇してきた、私がやったことはカスタマイズされたテキストボックスを作り、このコントロールから依存関係プロパティを公開されています。
フォーカス、selectalltext Likeしてモデルを表示するために、これらのプロパティをバインドします。