Popup の StaysOpen プロパティ

が使いこなせない….

Popup を表示させたとき,
Popup 以外をクリックしたら Popup を自動的に閉じるようにしたいとき,
StaysOpen プロパティを使うことで簡単に実装できる…らしいのでトライしてみた.

Popup の StaysOpen プロパティを False にした状態で,
ToggleButton の IsChecked プロパティを Popup の IsOpen プロパティにバインドして,
ToggleButton の操作で Popup の開閉をするようにすると,
とりあえずできるようになった.

どうやら ToggleButton を ON にしたときに,
Popup の GotMouseCapture イベントが発生しているみたい.
Popup がマウスをキャプチャしているおかげで,
Popup 以外の領域をクリックすると,
PreviewMouseDownOutsideCapturedElement イベントが発生して
Popup が閉じる仕組みになっているようだ.

ここまでわかったので,
ToggleButton 以外の要素で Popup の開閉を制御しようと試みた.
しかし Popup がマウスをキャプチャしてくれなくなってしまった.
しかも Popup.CaptureMouse() で強制的にマウスキャプチャしようとしても
戻り値が false となって使えない.

うむ~,なぜなんだ….