2013-02-22 6 views
5

ボタンクリック(popup.IsOpen = true;)に応答してPopupと表示しています。ポップアップにはComboBoxが含まれています。コンボボックス内のアイテムをクリックすると、SelectionChangedイベントの1つはポップアップを非表示にすることです。奇妙な問題 - ポップアップでのマウスクリックが下のコントロールによってキャプチャされている

私のページにもあるDataGridにポップアップが表示され、コンボボックスのマウスクリックもDataGridにあるMouseUpイベントによって取得されていることがわかりました。何が起きているのか?

答えて

2

MouseUpイベントのルーティング戦略は、Bubblingです。このタイプの戦略を使用するイベントは、チェーンの親コントロールに渡されます。 PopupDataGridの子であるため、イベントはDataGridまで "バブル"します。むしろバブルではないイベントの場合は、Tunnelingルーティング戦略を持つPreviewMouseUpを試して、チェーンを子コントロールに「トンネル」することができます。ここにはoverviewRouting Strategiesがあります。

+0

DataGridでMouseUpとPreviewMouseUpの両方を試しましたが、成功しませんでした。不思議なことに、ポップアップにはボタンも含まれており、問題はありません。コンボボックスをクリックしたときだけです。 –

+0

@AndrewStephens:うーん、奇妙だ...私はちょっと実験したが、DataGridのMouseUpはComboBoxのクリックで解雇されなかった... PreviewMouseUpイベントは起きていた(私はそれが他の道の周りに)。私はまた、アイテムが選択されたときにポップアップを隠しました。だから私は問題を再現することはできません...いくつかのコードを投稿することに興味がありますか? – Mash