Probabilmente, se avete iniziato a sviluppare applicazioni in WPF, avrete notato che qualche controllo che eravate soliti a usare, non c'è più. Tra i più importanti di questi, il MDI Parent, il controllo per ospitare altri form nel form principale (o in un secondario).

Iniziamo con le dichiarazioni.

Dichiarate queste variabili globali

    
    Private WithEvents wnd As Window
    Dim grid2 As Grid

 

Il controllo grid2 serve a evitare bug grafici, poiché qualora ripuliste il Grid1, ne riscontrereste.

 

Usate questo codice

 

    
    Private Sub Use_ChildWindow()
        grid2 = New Grid
        grid.Children.Add(grid2)
        'grid2.Margin = New Thickness(10, 0, 0, 0)
        wnd = New [Nome Window]()
        wnd.Show()
        Dim childContent As Object = wnd.Content
        wnd.Content = Nothing
        wnd.Owner = Me
        grid2.Children.Add(TryCast(childContent, UIElement))
        Me.Focus()
    End Sub

Usate grid2.Margin se volete aggiustare lo spazio che magari non è disposto come volete voi. I parametri messi nel commento sono solo un esempio ovviamente

Ricordate di settare il parametro x:Name alla vostra Grid, altrimenti grid. vi risulterà errore perché non è dichiarato

E infine, wnd_Closing

 

    Private Sub wnd_Closing() Handles wnd.Closing
        grid.Children.Remove(grid2)
    End Sub

Questo codice provvederà a pulire la Grid una volta che chiudete il vostro ChildWindow.

Infine ecco cosa dovete fare se la vostra applicazione è multilingua.

Mettete questo codice all'avvio del vostro ChildWindow per ogni controllo multilingua (con i dovuti adattamenti)

 

[Controllo].Content = FindResource("[Nome parametro]").ToString()

Se non lo fate potreste ottenere dei Warning nell'Output. Ricordate sempre di mettere prima questo

 

Resources.MergedDictionaries.Add(item As System.Windows.ResourceDictionary)
'Al posto di item ovviamente dovete mettere il vostro parametro.
'Non mi ci soffermo oltre perché altrimenti usciremmo dal contesto
'di questo tutorial

 

 

 

Come vedete non abbiamo importato nessun Riferimento e nessuna Libreria. Consiglio l'utilizzo di questo articolo se volete importare il contenuto di un form più che una finestra intera. Non l'ho testato per quello (ho usato il codice basato sul mio programma). Potrete trovare qualcosa di simile girando su Google ovviamente, ma solo questo tutorial è abbastanza completo da permettervi di non ottenere bug grafici senza molti adattamenti al codice.

Se volete ottenere risultati migliori dovrete usare librerie di controlli simili al ChildWindow, una cosa che io non consiglio poiché sono molto incompatibili.