FC2ブログ

ポップアップは動かない(弐)

前回の続き。
親(ウィンドウ)についてこず、動かない子(ポップアップ)。
対策を調べる先は、当然StackOverflowである。
How can I move a WPF Popup when its anchor element moves?
ほほお、なるほど。という感じで、添付プロパティとして実装した。
用意する添付プロパティは、合計で三つ。

AnchorToParentWindow:Popupに添付するためのプロパティ。
FollowerPopups:フォロー中のポップアップリスト。内部用。
NowFollowing:フォロー中のWindowかどうか。内部用。

添付プロパティは、別にpublicである必要はなく、内部用としても活用できるので便利。続きを読む
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0

ポップアップは動かない(壱)

現在進行中の仕事の一つで、VBで開発されたアプリをWPFに移行している。このアプリ、元がVBだけに、WPFではあまり使っていない機能を使っている。その一つがポップアップだ。しかも、表示だけではく、入力を行う画面もある。
当然、WPFにもポップアップという機能があるのだけど。このポップアップ、残念ながらそのままでは使えなかったのだ。

〇基本形
ポップアップを使うには、ポップアップとそれを表示するトリガーとなるUI(通常はボタンかな)を用意する必要がある。
ボタン
<Button x:Name="OpenPopupBtn"
Grid.Row="3"
Content="Popup表示"
Click="Button_Click_1"
HorizontalAlignment="Left" Padding="10,2" Margin="5,10"
/>

なお、VMパターンにはあるまじきイベントを利用しているけど、本稿の趣旨はそこじゃないので(言い訳)。
ポップアップ
<Popup x:Name="Popup1"
Placement="Relative" PlacementTarget="{Binding ElementName=OpenPopupBtn}"
StaysOpen="False"
VerticalOffset="-25" HorizontalOffset="10">
<Grid Background="White">
<Label>ここはポップアップの中だ</Label>
</Grid>
</Popup>
<Popup Placement="Relative" PlacementTarget="{Binding ElementName=OpenPopupBtn}">
表示位置は"相対"で、基準とするTargetはボタンであることを設定している。
StaysOpen="False"ポップアップの外でクリック等のアクションがあれば、ポップアップを閉じるようにする。
<Popup VerticalOffset="-25" HorizontalOffset="10">
ポップアップの表示位置を、PlacementTargetで指定したコントロールから垂直、水平方向にずらす。
垂直方向は、上にずらすときは、マイナス値で指定する。
<Popup StaysOpen="False">
これをFalseにしておくと、外でクリックすると消えてくれる。ただし、入力コントロールを配置するときは、逆にTrueにする必要がある。
なお、Popupの中のGridに背景色を設定しないと、透明ではなく、真っ黒になる。
ここまでは普通にできる。だが、苦労したのはここからだった。
続きを読む
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0

サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m