2009-05-06 26 views
1

私のコントロールのLostFocusイベントを処理するコードがあります。値を検証し、場合によっては後続の制御を有効にします。たとえば、ユーザーが国を選択できるようにするComboBoxがあります。後続のComboBoxを使用すると、ユーザーは状態を選択できます。現在選択されている国が米国でない場合、ComboBoxの状態は無効になります。ユーザーが「USA」を選択してコンボボックスからタブを選択すると、LostFocusコードは状態ComboBoxを有効にします。ただし、State ComboBoxはフォーカスを取得せず、代わりにState ComboBoxに続くコントロールにフォーカスを移動します。WPFフォーカスの問題

私はPreviewLostKeyboardFocusを使用して、代わりに運がないイベントを処理しようとしました。私は、WPFをハックしてこの作業を行うために何らかの方法を考え出すのを犠牲にしています。助言がありますか?

答えて

1

データが変更されたときに検証しますが、UIは検証しません。バインディングからプロパティが更新されたときに起動する検証ルールを追加できます。次に、スタイルトリガを使用して問題のコントロールをアクティブにすることができます。 Check this article助けてください。

+0

この回答を編集してください。リンクは死んでいる。 –

1

私は、LostFocusイベントが発生する前にタブにコントロールを決定しているため、状態コンボボックスが無効になっているため、そのコンボボックスをスキップしていると推測しています。ここにはhow focus works in WPFの情報があります。あなたがしたいことはあなたのハンドラにあり、次にStateコンボボックスに行くべきかどうかを決定し、FocusManagerクラスを介してその要素にプログラム的に集中します。