今日は気乗りしない。なのでコマンドは休んで、どうでもいいものをやってみようと思う。
WebとかでAjaxバリバリしておりますよ!っていうサイトがたまにやってるアレ。
なんて言ったらいいのかな?confirmとかでYes/No出せばいいのに何故か画面全体が半透明のグレーの膜で覆われて、そこにDivで作られたと思われるおしゃれなダイアログを模したものが出るアレ。
アレをWPFでもやってみようと思う。
<UserControl x:Class="WpfDummyDialog.ConfirmDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Rectangle Fill="Gray" Opacity="0.5" />
<Border Width="300" Height="150" CornerRadius="20" Background="Chocolate" Padding="10">
<DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Content="OK" MinWidth="50" Margin="5,0" Click="OKButton_Click"/>
<Button Content="Cancel" MinWidth="50" Margin="5,0" Click="CancelButton_Click"/>
</StackPanel>
<TextBlock Text="ほげほげでいいですか?" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</DockPanel>
</Border>
</Grid>
</UserControl>
とりあえず!!UserControlを用意!!こいつがダイアログっぽく表示される。
見た目は、「ほげほげでいいですか?」と表示されてOKとCancelボタンがあるといった感じ。
Rectangleを半透明で表示することで、グレーの膜みたいなものを作ってる。
次は、こいつを表示させるためのウィンドウ側。
これは、Gridが全体に表示しようと頑張ってくれるのを利用して、Visibility="Collapsed"とVisibleを切り替えることでそれっぽく表示する。
<Window x:Class="WpfDummyDialog.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WpfDummyDialog="clr-namespace:WpfDummyDialog"
Title="Window1" Width="400" Height="300">
<Grid>
<Button Content="ちょっとやってく?"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Click="Button_Click"/>
<WpfDummyDialog:ConfirmDialog x:Name="_confirm" Visibility="Collapsed" />
</Grid>
</Window>
using System.Windows;
namespace WpfDummyDialog
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
_confirm.Visibility = Visibility.Visible;
}
}
}
ぼたんくりっくでは、_confirm.Visiblity = Visibility.Visible;とかをして表示非表示をしてるだけ。実行すると下のような感じになる。
ちょっとやってく?ボタンを押すと
こんな具合にモーダル風のものが出てくる。
素敵だ。そして眠いzzz...