5

Ok。これは信じられないほど基本的な使用例のように思えますが、何らかの理由で、コントロール タイプ全体で共通の解決策を見つけるのに問題があります。

ユースケースは次のとおりです。

編集可能なコントロールを含むフォームがユーザーに表示されます。(テキスト ボックス、コンボ、グリッドなど)。

ユーザーがコントロール内の値を編集し、タブ アウトします。
期待されるのは、Lost Focus のようなイベントに接続して、変更された値で "foo" を実行できることです。

その後、ユーザーはコントロールにフォーカスを戻し、編集せずにタブアウトします。期待されるのは、接続されているイベントが何であれ、値が変更されたかどうかを確認できることです。

ユーザーが編集を終了したときにのみ発生し (タブアウトやエンターなど)、以前の状態と現在の状態を確認できるようにする、コントロール全体で共通のイベントが 1 つありますか?

4

4 に答える 4

1

Jason さん、フォームでイベントを追跡するのではなく、WPF の Binding と DependencyProperties を調べることをお勧めします。変更するプロパティを公開するクラスをフォームにバインドします。DependancyProperties を使用すると、"PropertyChanged" という単一のイベントが発生します。

残念ながら、これは広範なトピックですが、WPF プログラミング モデルの利点を十分に活用できます。「wpf の依存関係プロパティ」で検索すると、いくつかの良い例が得られます。

于 2012-10-19T14:54:08.000 に答える
0

おそらくこれはフォーカスの問題だと思います。キーボード フォーカスと論理フォーカスの 2 つの異なるフォーカス タイプがあります。キーボード フォーカスを持つコントロールは、ユーザーがキーを押して入力するコントロール プロセスにキャレットがあるコントロールです。コントロールに論理フォーカスがあっても、キーボード フォーカスがない場合があります。これについては、MSDN の記事「入力の概要」で確認してください。他の質問については、タブ項目の選択が変更されたときにイベントを取得するために TabControl.SelectedItemChanged を処理できるかもしれません。これがお役に立てば幸いです...

于 2012-10-19T15:18:57.050 に答える
0

前の回答が示唆したように、view-viewmodel 構造を実装し、viewmodel が INotifyPropertyChanged を実装することで、UI への変更を通知するプロパティにバインドできるようにすることをお勧めします。

これを行いたくない場合は、最終的に入力要素を PreviewKeyUp イベントにサブスクライブし、Tab キーが押されたかどうかを確認して、そこから先に進むことができます。

于 2013-03-20T10:28:34.537 に答える
0

あなたが興味を持っているのは、(INotifyPropertyChanged だけでなく) INotifyPropertyChanging を実装することです。

この質問の回答で述べたように、INotifyPropertyChang INGは値の変更を防止するのではなく、何かがいつ変更されるかを検出し、新しい値がどうなるかを検出します。

ソリューションのニーズに役立つことを願っています。

于 2012-10-22T11:45:13.993 に答える