0

一部のコントロールで共通の動作を実装するには、助けが必要です。

私の WPF アプリケーションには、パネルとボタンを含むメイン フォームがあります。

Ok

このボタンをクリックすると、Save メソッドが実行されます。Save メソッドは、フォームからデータを読み取り、そのデータをデータベースに保存します。

パネルには、動的に作成されたコントロール (テキスト ボックス、ドロップダウン リストなど) が表示されます。メイン フォームは MainViewModel クラスをインスタンス化します。この MainViewModel クラスは、UIFactory というクラスをインスタンス化します。したがって、ここには 3 つのレベルがあります。

UIFactory クラスでは、コントロールが作成されています。メイン フォームの Panel は、GenerateUI という MainModelView クラスのメソッドにパラメーターとして送信されます。この MainViewModel クラスの GenerateUI メソッドは、同じパネルをパラメーターとして受け取る UIFactory クラスの GenerateControls メソッドを呼び出します。UIFactory クラスの GenerateControls メソッドは、動的に作成されたコントロールをパネルに追加します。

私が達成したいのは、ユーザーがテキストボックスなどの動的に作成されたコントロールのいずれかに入力しているときに ENTER を押すたびに、その動作をメインフォームのボタンをクリックするのと同じにしたいということです。しかし、どうすればそれを行うことができますか?コントロールに Routed イベントを実装することを考えましたが、その方法がわかりません。私の目標を達成する方法を教えてください。

よろしくお願いします、

OKB

4

2 に答える 2

0

Keyboard.KeyUp付属のイベントが役立つかもしれません。動的に作成されたコントロールを含むメイン パネルで設定し、押されたキーが ENTER キーの場合は保存操作を実行できます。

于 2010-04-28T09:11:00.400 に答える
0

私は自分の問題の周りに仕事を作成することができました:

私がしたことは、カスタム ユーザー コントロールを作成することでした (コンテナーと呼びましょう)。このコントロールは、パネルの代わりに WindowsFormsHost を使用して、私の wpf アプリケーションでホストされています。次に、動的に作成されたユーザー コントロールを新しいカスタム ユーザー コントロール (コンテナー) に追加し、各子コントロールの KeyUp イベントに KeyEventHandler を追加します。子コントロールからすべての KeyUp イベントをキャッチするカスタム イベントとイベント ハンドラーをコンテナーに作成し、e.KeyValue == 13 (ENTER) かどうかを確認してから、wpf で処理されるコンテナーからカスタム イベントを発生させます。形。h*ll のように醜いですが、動作します。

于 2010-05-07T08:16:47.287 に答える