忘れないうちにメモメモ。
WPFのPopupは、手軽にポップアップ状態を実現できるので便利なのですが
基本このポップアップはWindowのようにマウスで位置を動かすことができません。
たまーにですが、動かしたいときがあります。
で、ネットで調べていると結構同じ事を思っている人が多いみたいでStack Overflowとかで結構みつかりました。
基本的にどれもイベントを拾ってオフセットとって指定という流れなのですが
の中でBlend SDKに付属しているBehaviorを使って実装しているサンプルがありました。
以下、上記URLのサンプルとほとんど同じなのですが、やり方としては
System.Windows.Interactivity.Behavior<T>
を継承したクラスを作成します。
あとは、PopupにBehaviorを設定すればOK。BlendからだとDragPopupBehaviorをマウスでドラッグするだけです。
<i:Interaction.Behaviors> <local:DragPopupBehavior/> </i:Interaction.Behaviors>
以下、サンプルです。
WPFDraggablePopup (ドラッグ可能なポップアップ)
同じ流れで、PlacementTargetに追随するBehaviorも作れますね。Blend SDK便利。
WPFFollowPopup (PlacementTargetに追随するポップアップ)
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。