2017-11-01 38 views
0

私は、PrismライブラリとUnity Containerを使用して、WPFを利用するプロジェクトに取り組んでいます。WPF Prism Unity Container。ユーザーコントロールまたはユーザーコントロールのグリッドの親にキーボードフォーカスを設定する

私はmainviewmodelコントロールを含んでいるメインウィンドウを持っています。このコントロールには、ユーザーコントロールのコレクションが格納されています。

私の目標は、私がkeyeventsargsに反応するEventTrigger InvokeCommandActionを持ってmainviewmodelにキーボードフォーカスを設定することです

...

現在、唯一私がコントロール内にテキストボックスを使用する場合、コマンドが発射されている方法(または子コントロール)。私の目標は、mainviewmodelコントロールまたはグリッドにキーボードフォーカスを取得して保持させることです。

ヒントをいただければ幸いです! // Nathan

答えて

1

質問を正しく理解していないか、WPF実装でMVVMの基本的な概念を確認する必要があります。

ビューはWPFコントロールです。
WPFウィンドウ/ UserControlファイルには、ビューであるWPFマークアップが含まれています。

ビュー内のコントロールは、コントロール自体またはコントロールを含む親(継承する)のいずれかのDataContextプロパティにDataBindingsを利用します。

DataContextプロパティは、ViewModelであるオブジェクトのインスタンスに設定されます。値を保持するプロパティと、アクションを実行するコマンドが含まれています。

概念的には、「mainviewmodelコントロール」はありません。コントロールを含むMainViewがあり、この場合、MainViewModelのインスタンスにDataContextプロパティが設定されている可能性があります。 (したがって、私の混乱)

最後に、ビューモデルでUIルール/ロジックを書くことをお勧めする人もいますが、多くのメリットはありません。

UIロジックをXAMLまたはMinViewのコードの背後に置くほうがずっと良いです。 MainViewModelとしてMainView.DataContextプロパティをキャストすることで、コードビハインドのMainViewModelに引き続きアクセスできます。

したがって、たとえば: MainView.KeyDownイベントは、MainViewModel.CommandX.Execute();を呼び出して呼び出すことができます。

関連する問題