[VB.NET][WPF] パンくずリストの実装例

2013年12月7日

 業務アプリにありがちな、シングルウインドウで画面展開していき、子画面を閉じると親画面が表示される系の実装例。いわゆるパンくずリスト。(まあ以下の実装はリスト表示ではないので、正確にはパンくずリストではないですが)

 具体的には、次の画面を .show した後に、次の画面の .Owner に親画面のインスタンスを突っ込んでおきます。
 その後、親画面は .Hide で非表示にします。

 子画面が閉じられたときは、.Owner を .show してやれば親画面の表示が戻ります。
 .Owner の Nothing を確認しているのは、ルートウインドウは親要素がセットされていないため。

Class MainWindow 

    Private Shared _count As Integer = 0

    Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
        _count += 1
        Me.Title = CStr(_count)  ' いつ作った Window なのかを確認するための、デバッグ情報。
    End Sub

    ' 子画面を開く
    Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
        Dim f = New MainWindow
        f.Show()
        f.Owner = Me
        Me.Hide()
    End Sub

    ' 画面を閉じる
    Private Sub MainWindow_Closed(sender As Object, e As EventArgs) Handles Me.Closed
        If (Me.Owner Is Nothing) = False Then   ' ルートウインドウではないなら
            Me.Owner.Show()
        End If
    End Sub

End Class

 上記はテストプログラムなので、Title に生成した Windows 番号(_count) を表示して、いつ作成したかわかるようにしています。
 また、本来は複数のウインドウで呼び合いますが、枚数作るのは面倒だったので、再帰でサンプルを作っています。






カテゴリー: Program, VB.NET, WPF

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org