この記事でやることは以下のようなことです。
- 渡すデータを入力する。
- 子ウィンドウ(モーダルウィンドウ)にデータを渡す。
- 受け取ったデータを表示する。
アプリの概要
今回のアプリは簡単なものです。テキストに書かれた内容を子ウィンドウに渡して表示するというアプリです。
親ウィンドウのテキストボックスに「ここに書かれている内容を渡すよ!」と書かれています。
この状態でボタンを押すと子ウィンドウが表示されます。
子ウィンドウには、親ウィンドウと同じ内容が表示されています。
親ウィンドウのテキストボックスの内容を変更して、ボタンを押すと、
子ウィンドウの内容も変更した内容に変化しています。
プログラムの内容
アプリが簡単なら、プログラムも簡単です。
親ウィンドウ
xaml
<Window x:Class="TestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<StackPanel>
<TextBox x:Name="text" Text="ここに書かれている内容を渡すよ!"/>
<Button Content="画面表示" Height="50" Click="Button_Click"/>
</StackPanel>
</Window>
コードビハインド
using System.Windows;
namespace TestApp
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
var window = new ChildWindow(text.Text);
window.Show();
}
}
}
子ウィンドウ
xaml
<Window x:Class="TestApp.ChildWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestApp"
mc:Ignorable="d"
Title="ChildWindow" Height="450" Width="800">
<Grid>
<TextBlock x:Name="text" />
</Grid>
</Window>
コードビハインド
using System.Windows;
namespace TestApp
{
/// <summary>
/// ChildWindow.xaml の相互作用ロジック
/// </summary>
public partial class ChildWindow : Window
{
public ChildWindow(string strData)
{
InitializeComponent();
text.Text = strData;
}
}
}
コードビハインドのコンストラクタに引数を追加して、引数の内容をテキストボックスに表示しています。