作成2013.04.30
サンプルコード「WPF Printing Overvie1」の中にWPFでのマルチウインドウのわかりやすい事例が見つかりました。
驚くほど簡単な記述です。
- WPFでのマルチウインドウ (VB)
サンプルコード「WPF Printing Overvie1」の極一部を抜粋してC#からVBに変換しました。
ダウンロード後は解凍してから使用してください。
[WPFでのマルチウインドウ (VB)]をダウンロードする。
解凍すると「44MultiWindow」フォルダーがあります。
注(1)「44MultiWindow」フォルダーの「MultiWindow.sln」ファイルをダブルクリックすると「Microsoft Visual Basic 2010 Express」が起動します。
注(2)メニューの「ウインド」_「ウインドレイアウトのリセット」で標準に戻ります。
注(3)「ソリューションエクスプローラ」ウインドウ内の「MainWindow.xaml」をダブルクリックすると「デザイン」と「XAML」が表示されます。
注(4)メニューの「表示」_「コード」を選択するとコードが表示されます。
注(5)「MultiWindow.sln」の動作確認は「デバッグ」_「デバッグ開始」で実行します。デバッグ機能を用いて動作確認を行います。
- MultiWindow.slnの実行
(1)「Microsoft Visual Basic 2010 Express」のデバッグ機能を使用します。
(2)「デバッグ」_「デバッグ開始」を選択します。
(3)画面が表示されます。
(4)NextPageボタンを押すとウインドウが変わります。
(5)クローズボックスで終了します。
- プロジェクトの構成
(1)XAMLコードとVBコードで構成されます。
(2)ソリューションエクスプローラーのプロジェクトを右クリックしてwindowを追加します。
- MainWindow.xamlの全コード
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Label Content="表紙" HorizontalAlignment="Left" Margin="30,10,0,0" VerticalAlignment="Top"/>
<Button Content="NextPage" HorizontalAlignment="Left" Margin="97,14,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>
</Grid>
</Window>
- MainWindow.xaml.csの全コード
using System.Windows;
namespace MultiWindow
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var win = new Window1();
win.Show();
this.Close();
}
}
}
- Window1.xamlの全コードの全コード
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Label Content="1ページ" HorizontalAlignment="Left" Margin="30,10,0,0" VerticalAlignment="Top"/>
<Button Content="NextPage" HorizontalAlignment="Left" Margin="97,14,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>
</Grid>
</Window>
- Window1.xaml.csの全コードの全コード
using System.Windows;
namespace MultiWindow
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var win = new Window2();
win.Show();
this.Close();
}
}
}
- Window2.xamlの全コード
<Window x:Class="Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window2" Height="300" Width="300">
<Grid>
<Label Content="2ページ" HorizontalAlignment="Left" Margin="30,10,0,0" VerticalAlignment="Top"/>
<Button Content="NextPage" HorizontalAlignment="Left" Margin="97,14,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>
</Grid>
</Window>
- Window2.xaml.csの全コード
using System.Windows;
namespace MultiWindow
{
public partial class Window2 : Window
{
public Window2()
{
InitializeComponent();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var win = new MainWindow();
win.Show();
this.Close();
}
}
}
感想:
(1)非常に簡単な記載でマルチウインドウの切り替えができます。