FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: スポンサー広告

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

現在進行中の仕事の一つで、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に背景色を設定しないと、透明ではなく、真っ黒になる。
ここまでは普通にできる。だが、苦労したのはここからだった。
入力コントロールを配置するため、StaysOpenプロパティをTrueにしたのだけども。
20180407_1.png
ちょっと移動させてみよう。
 20180407_2.png
おい、待てや。
おもちゃ屋の前で駄々こねる子供か!とか思ってしまった。梃子でも動きそうにない。
PlacementはRelativeやろが。相対位置を維持するんやないのかい。Orz。最初の表示位置を相対で指定するか、絶対で指定するかなのかよ。標準では親画面に追随するようなプロパティないし。ここから自分で実装せなあかんのか…。
仕事しろMicrosoft(WPF開発担当部署)!
続く。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


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

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

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

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

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。