2011-12-08 14 views
2

コンボボックスのイベント選択の変更に違いがあるかどうかを知りたいと思います。 私は、コンボボックスを手動でクリックして値を変更したユーザーと、コードから行う選択の変更を変更したいと思っています。コードからの呼び出しに応じて選択を変更するか手で変更する

すなわち:私は私のコンボボックスをクリックして、手でその値を変更した場合

、イベントが 解雇されたが、

を発射していない私はmyCombobox.selectedItem = 1 [ 編集]イベントをすればされます

wpfcomboboxでこの動作をするイベントはありますか? そうでない場合は、どうやったらいいですか?

おかげ

[編集]またはそれはあなたがコード内のSelectedItemを変更する前に、その値

答えて

3

あなたはいくつかのシナリオを扱っていますが、どちらも解決できます。

1)データバインド中にSelectedItemリクエストを処理しないでください。

a)データバインドが完了した後、またはフォームがロードされるまで(データバインドが自動または手動であるかどうかに応じて)、イベントハンドラをコントロールに追加しないでください。

b)SelectedItemイベントの処理が正常であることを示すフォームレベルプロパティを設定します。フォームがロードされた後、またはデータバインディングが完了した後で、これをtrueに設定することをお勧めします。 SelectedItemコードでは、このプロパティがtrueでない限りアクションを実行しないでください。

2)SelectedItemがプログラムによって変更された場合、SelectedItemロジックを処理します。繰り返しますが、2つのオプション:

a)SelectedItemイベントのロジックをメソッドに抽出し、選択したアイテムを設定するロジックを実行するときにこのメソッドを呼び出します。

b)ベースから継承するカスタムコンボボックスを作成し、この継承コンボに(たとえば)SetSelectedItemメソッドを追加します。このメソッドは、SelectedItemメソッドを呼び出します。これは再利用可能で、SelectedItemを手動で設定するたびに2つの作業をする必要はありません。

2

を変更するコンボボックスの結合されている場合、-=を持つイベントハンドラを削除し、その後、追加します後でそれを取り戻す。

+0

私はそれよりも厄介であることを説明するために私の質問を編集しました – djfoxmccloud

+0

上記のコードは、コードで選択した項目を変更したときにイベントが発生するのを防ぎます。 )。 –

関連する問題